VBA Tipp: Verzeichnis löschen

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Ich möchte ein Verzeichnis mit allen darin enthaltenen Dateien und Unterverzeichnisssen löschen. Die Löschung geschieht ohne Vorwarnung, und ist nicht rückgängig zu machen.

Lösung

Das geht mit der folgenden Funktion, die in einem globalen Modul gespeichert wird.

Public Function VerzeichnisLoeschen(Ordnerpfad As String) As Boolean
 
   ' Late Binding, kein Verweis auf "Microsoft Scripting Runtime" notwendig
   ' Quelle: http://www.dbwiki.net/
 
   Dim fso As Object   'Scripting.FileSystemObject
 
   On Error GoTo Exit_VerzeichnisLoeschen
 
   ' Backslash am Ende des Pfads löschen
   If Right(Ordnerpfad, 1) = "\" Then
      Ordnerpfad = Left(Ordnerpfad, Len(Ordnerpfad) - 1)
   End If
 
   Set fso = CreateObject("Scripting.FileSystemObject")
   Call fso.DeleteFolder(Ordnerpfad, True)
 
Exit_VerzeichnisLoeschen:
   If Err.Number = 0 Then VerzeichnisLoeschen = True
 
End Function

Aufruf

   Dim strPfad As String
 
   strPfad = "D:\EinVerzeichnis1\EinVerzeichnis2"
 
   ' Beispiel 1: Verzeichnis löschen
   Call VerzeichnisLoeschen(strPfad)
 
   ' Beispiel 2: Verzeichnis löschen und Rückgabewert der Funktion auswerten
   If VerzeichnisLoeschen(strPfad) Then
      MsgBox "Das Verzeichnis wurde gelöscht."
   Else
      MsgBox "Das Verzeichnis wurde nicht gelöscht."
   End If


Wiki warning.png

Achtung: Bitte die Prozedur mit größter Sorgfalt verwenden.

  • Bei versehentlicher Wahl des falschen Verzeichnisses können gravierende Datenverluste entstehen.
  • Auch alle Unterverzeichnisse werden zusammen mit eventuell darin enthaltenen Dateien unwiderruflich und ohne Rückfrage gelöscht.


Wikilinks