Kill excel werkmap via vba

Status
Niet open voor verdere reacties.

Ibok

Gebruiker
Lid geworden
29 sep 2010
Berichten
35
Ik probeer via de volgende code een werkmap te verwijderen:

Code:
Sub Blad_verwijderen()
    
Dim vAntwoord As Variant
vAntwoord = MsgBox("Wilt u dit blad verwijderen?", vbYesNoCancel, "ik vraag u:")

ActiveSheet.Unprotect ("")

Select Case vAntwoord

Case vbYes

Dim wB As String
wB = ActiveWorkbook.FullName

Application.DisplayAlerts = False
ActiveWorkbook.Close
Kill wB
Application.DisplayAlerts = True

Case vbNo
ActiveSheet.Protect ("")
MsgBox "Nee; blad wordt niet verwijderd.", vbInformation

Case vbCancel
ActiveSheet.Protect ("")
MsgBox "Annuleren; blad wordt niet verwijderd.", vbInformation

End Select
End Sub

De code loop helemaal door, echter de werkmap wordt niet verwijdert. Wanneer ik het stukje onder case vbYes aanpas naar:
Code:
Case vbYes

Dim wB As String
wB = ActiveWorkbook.FullName

Kill wB

dan loopt de code vast op Kill wB. De regel wordt geel en als ik er vervolgens met de muis over heen beweeg, zie ik het juiste pad en bestand staan wat verwijdert moet worden. Hij doet het echter niet...

Iemand een idee hoe ik dit kan oplossen / waar dit door komt?
Ik gebruik windows XP en Excel2007.

Alvast bedankt
 
Heb je, als je in de Stapmodus door de code loopt, gecontroleerd of je bestand ook echt is gesloten? En staat het bestand wel in de juiste map?
 
Als ik de stapmodus uitvoer, sluit excel en ook vba. Dus ja, ga ervan uit dat de werkmap goed is afgesloten... Voert ie echter dan nog wel de rest van de code uit?

Het bestand staat in ieder geval in de juiste map.
 
Zo laat op de avond moet je niet meer programmeren :)

Besef je wel wat je aan het doen bent?
Ik bedoel, je bent de file met je code aan het "killen" te midden de code :mad:
Dat is toch pure nonsens :evil: :evil:

Wat moet je juist doen?
Je sub noemt "Blad_verwijderen" en je bent een file aan het verwijderen ?? !! ??

Om met files te werken bestaat er iets als "Microsoft Scripting Runtime" waarmee je files kunt wissen, kopiëren, check als een file bestaat enz.... Gebruik dus aub geen "KILL"

Ga via het menu Extra\Verwijzingen om "Microsoft Scripting Runtime" in te schakelen.
Met deze code kan je dan een file wissen wanneer ze ook bestaat.
Code:
Sub Trial001()
Dim strFile2Delete  As String

    strFile2Delete = "C:\Kopie van realtek.log"
    
    Call DeleteFile(strFile2Delete)
    
End Sub


Private Sub DeleteFile(DeleteMe As String)
'Delete een file
'
Dim fso         As Scripting.FileSystemObject

    Set fso = New FileSystemObject
    
    If fso.FileExists(DeleteMe) Then
        'Delete bestand
        fso.DeleteFile (DeleteMe)
    Else
        'Bestand bestaat niet dus niets doen of melding geven
        
    End If

    'Verwijderen referenties
    Set fso = Nothing
    
End Sub
 
Haha, ja bleef gisteravond een beetje hangen om de code voor elkaar te krijgen... de code heeft namelijk wel gewerkt..

Wat ik wil is de gebruiker de mogelijkheid geven om het bestand waar ze in werken, vanuit het werkblad zelf te verwijderen in plaats van het bestandje op te gaan zoeken op de server... Dat de sub blad_verwijderen heet komt niet helemaal overeen met de functie. Ik zal het aanpassen naar huidigbestand_verwijderen o.i.d.

Ik zal een en ander gaan testen met je beschrijving, maar gaat dit zoals mijn bedoeling is vanuit de werkmap?
 
Het zal zeker gaan maar of het "good practice" is ben ik niet zo zeker :(
Je bent namelijk de tak aan het afzagen waar je zelf op zit!
Afhankelijk van de hoogte kan dat zéér zéér pijnlijk worden :)

Ik denk aan oa. memory leaks wanneer bepaalde objecten niet correct afgesloten worden.
 
Pfff, zo ver gaat mijn vba kennis (nog) niet. Wat kan er gebeuren dan met memory leaks? Ik maak er ook een beetje uit op dat mijn wens om vanuit de werkmap het bestand de verwijderen eigenlijk niet kan?

Ik ga even testen in ieder geval, alvast dank voor de reactie!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan