Löschen einer Datei in VBA

Wie kann ich mit VBA:

  1. prüfen, ob eine Datei existiert, und wenn ja,
  2. sie löschen?
Lösung

1.) Prüfen Sie hier. Tun Sie im Wesentlichen Folgendes:

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

Ich überlasse es Ihnen, die verschiedenen erforderlichen Fehlerbehandlungen herauszufinden, aber dies sind einige der Fehlerbehandlungen, die ich in Betracht ziehen würde:

  • Überprüfen, ob ein leerer String übergeben wird.
  • Prüfung auf eine Zeichenkette, die unzulässige Zeichen in einem Dateinamen/Pfad enthält

2.) Wie man eine Datei löscht. Sehen Sie sich dies. Grundsätzlich verwenden Sie den Kill-Befehl, aber Sie müssen die Möglichkeit berücksichtigen, dass eine Datei schreibgeschützt ist. Hier's eine Funktion für Sie:

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

Auch hier überlasse ich Ihnen die Fehlerbehandlung, und auch hier sind dies die Dinge, die ich berücksichtigen würde:

  • Sollte sich dies für ein Verzeichnis anders verhalten als für eine Datei? Sollte ein Benutzer explizit angeben müssen, dass er ein Verzeichnis löschen möchte?

  • Soll der Code das Nur-Lese-Attribut automatisch zurücksetzen oder soll der Benutzer auf irgendeine Weise darauf hingewiesen werden, dass das Nur-Lese-Attribut gesetzt ist?


EDIT: Markierung dieser Antwort als Community-Wiki, so dass jeder sie bei Bedarf ändern kann.

Kommentare (3)

Mit der folgenden Funktion können Sie prüfen, ob eine Datei vorhanden ist, und sie dann löschen.

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

In VB ist es normalerweise Dir um das Verzeichnis der Datei zu finden. Wenn es nicht leer ist, dann existiert es und dann wird Kill benutzt, um die Datei loszuwerden.

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