Een bestand verwijderen in VBA

Met behulp van VBA, hoe kan ik:

  1. testen of een bestand bestaat, en zo ja,
  2. verwijderen?
Oplossing

1.) Controleer hier. Doe in principe dit:

Function FileExists(ByVal FileToTest As String) As Boolean
   FileExists = (Dir(FileToTest)  "")
End Function

Ik'laat het aan jou over om de verschillende nodige foutafhandelingen uit te zoeken, maar dit zijn enkele van de foutafhandelingen die ik'zou overwegen:

  • Controleer of er een lege string wordt doorgegeven.
  • Controleer op een string die tekens bevat die illegaal zijn in een bestandsnaam/pad

2.) Hoe verwijder je een bestand. Kijk naar dit. Gebruik in principe het Kill commando, maar je moet rekening houden met de mogelijkheid dat een bestand alleen-lezen is. Hier's een functie voor je:

Sub DeleteFile(ByVal FileToDelete As String)
   If FileExists(FileToDelete) Then 'See above          
      ' First remove readonly attribute, if set
      SetAttr FileToDelete, vbNormal          
      ' Then delete the file
      Kill FileToDelete
   End If
End Sub

Nogmaals, ik'laat de foutafhandeling aan jou over en nogmaals dit zijn de dingen die ik'zou overwegen:

  • Moet dit zich anders gedragen voor een map vs. een bestand? Moet een gebruiker expliciet moeten aangeven dat hij een directory wil verwijderen?

  • Wil je dat de code automatisch het alleen-lezen-attribuut reset of moet de gebruiker een soort aanwijzing krijgen dat het alleen-lezen-attribuut is ingesteld?


EDIT: Markering van dit antwoord als community wiki, zodat iedereen het kan wijzigen indien nodig.

Commentaren (3)

Het volgende kan worden gebruikt om te testen op het bestaan van een bestand, en het vervolgens te verwijderen.

Dim aFile As String
aFile = "c:\file_to_delete.txt"
If Len(Dir$(aFile)) > 0 Then
     Kill aFile
End If 
Commentaren (2)

In VB is het normaal Dir om de directory van het bestand te vinden. Als het niet leeg is dan bestaat het en gebruik dan Kill om het bestand te verwijderen.

test = Dir(Filename)
If Not test = "" Then
    Kill (Filename)
End If
Commentaren (0)