Mit VBA prüfen, ob eine Datei vorhanden ist

Glen Alfaro 30 Januar 2023
  1. Verwenden Sie die Funktion Dir(), um mit VBA zu prüfen, ob die Datei auf dem Computer vorhanden ist
  2. Einführung von Platzhaltern in der Funktion Dir(), um mit VBA zu prüfen, ob eine Datei/S auf Ihrem Computer vorhanden ist
  3. Abrufen/Zählen aller auf dem Computer vorhandenen Namen mit VBA
Mit VBA prüfen, ob eine Datei vorhanden ist

VBA ist eine leistungsstarke Computerprogrammiersprache, insbesondere wenn es um die Entwicklung von Desktop-Software geht. Eine der Stärken von VBA ist seine Fähigkeit, Dateien auf dem Computer zu kommunizieren und zu manipulieren.

Dieses Tutorial zeigt, wie man überprüft, ob eine bestimmte Datei in einem bestimmten Pfad existiert. Dies ist eine typische Must-Do-Logik, insbesondere wenn es um Dateizugriff oder -manipulation geht.

Es empfiehlt sich, zuerst zu prüfen, ob eine Datei vorhanden ist, bevor Sie fortfahren. Es soll verhindern, dass Systemfehler auftreten, die zum Absturz des gesamten Programms führen.

Verwenden Sie die Funktion Dir(), um mit VBA zu prüfen, ob die Datei auf dem Computer vorhanden ist

Der folgende Codeblock zeigt, wie man mit der Funktion Dir() prüft, ob eine Datei existiert. Die Funktion Dir() ist ein mächtiges Werkzeug, um Ordnernamen und Dateinamen anhand ihrer Dateipfade zu erhalten. Der folgende Codeblock enthält eine Unterroutine mit einem fileToCheck-Parameter. Sie können die Unterroutine CheckFileExistence mit fileToCheck als Parameter aufrufen. Der Parameter fileToCheck ist der Dateiname oder der Ordnername, den Sie auf Existenz prüfen möchten.

Syntax:

Dir([pathname],[attributes])

Parameter:

[pathname] Optional. Der zu prüfende Ordnername, Dateiname oder Dateipfad
[attributes] Optional. Gibt einige Attribute an und die Funktion Dir() gibt die Dateinamen basierend auf diesen Attributen zurück

Für [Attribute] siehe die folgenden Definitionen.

vbNormal (Standard) Gibt Dateien ohne Attribute an.
vbReadOnly Gibt neben Dateien ohne Attribute auch schreibgeschützte Dateien an.
vbHidden Gibt versteckte Dateien zusätzlich zu Dateien ohne Attribute an.
vbDirectory Gibt Verzeichnisse oder Ordner zusätzlich zu Dateien ohne Attribute an.
vbSystem Gibt Systemdateien zusätzlich zu Dateien ohne Attribute an. Nicht verfügbar auf dem Macintosh.
Sub CheckFileExistence(fileToCheck as String)
Dim FileName As String
FileName = Dir(fileToCheck,vbNormal)

If FileName <> "" Then
    MsgBox "File Exists"
Else
    MsgBox "File Doesn't Exist"
End If
End Sub

Sub test1()

Call CheckFileExistence("Book1.xlsx")

test1 Ausgabe:

File Exists

Beachten Sie, dass sich die Datei Book1.xlsx in einem beliebigen Ordner auf Ihrem Computer befinden kann. Das Gute an der Funktion Dir() ist, dass sie die Datei an jedem möglichen Ort in allen Ordnern auf Ihrem Computer überprüft.

Wenn also das Ergebnis Datei existiert nicht lautet, wurde der Dateiname in keinem Ordner oder keiner Datei auf dem Computer verwendet.

Einführung von Platzhaltern in der Funktion Dir(), um mit VBA zu prüfen, ob eine Datei/S auf Ihrem Computer vorhanden ist

Zusätzlich erlaubt die Funktion Dir() Platzhalter für ihre Argumente. Diese Platzhalter können zum Suchen von Dateien verwendet werden, wenn Sie den genauen Dateinamen, Ordnernamen und Dateipfad, den Sie benötigen, nicht kennen.

Die folgende Liste enthält die von der Funktion Dir() akzeptierten Platzhalter:

? (Fragezeichen) bezeichnet irgendein einzelnes Zeichen. Es können Buchstaben oder Zahlen sein
* (Sternchen) Es repräsentiert eine beliebige Anzahl von Zeichen in einer Reihe.

Beispiele:

Dieser VBA-Codeblock prüft, ob eine Datei des Dateityps xlsx vorhanden ist. Daher verwenden wir den Suchdateinamen *.xlsx.

Sub CheckFileExistence(fileToCheck as String)
Dim FileName As String
FileName = Dir(fileToCheck,vbNormal)

If FileName <> "" Then
    MsgBox "File Exists"
Else
    MsgBox "File Doesn't Exist"
End If
End Sub

Sub test2()

Call CheckFileExistence("*.xlsx")

End Sub

test2 Ausgabe:

File Exists

Der folgende VBA-Code prüft, ob es eine Datei gibt, deren Dateiname in jedem Dateityp nur 2 Zeichen lang ist. Daher verwenden wir ??.*, um Dateinamen zu suchen.

Sub CheckFileExistence(fileToCheck as String)
Dim FileName As String
FileName = Dir(fileToCheck,vbNormal)

If FileName <> "" Then
    MsgBox "File Exists"
Else
    MsgBox "File Doesn't Exist"
End If
End Sub

Sub test3()

Call CheckFileExistence("??.*")

End Sub

test3 Ausgabe:

File Exists

Abrufen/Zählen aller auf dem Computer vorhandenen Namen mit VBA

Die obigen Codeblöcke erkennen nur die Existenz der Datei, ohne Informationen zu diesen Dateien zu erhalten. Im folgenden Codeblock listen wir alle vorhandenen Dateien auf, die mit unserer Suchnamenszeichenfolge übereinstimmen.

Für den folgenden Codeblock ist die Ausgabe der Dateiname aller .xlsx-Dateien, deren Dateiname 1 bis 4 Buchstaben lang ist (????.xlsx).

Sub ListAllFiles(fileToCheck As String)

Dim FileName As String

FileName = Dir(fileToCheck, vbNormal)

Do While FileName <> ""

    Debug.Print FileName
    FileName = Dir()
Loop


End Sub

Sub test4()

Call ListAllFiles("????.xlsx")

End Sub

test4-Ausgabe:

ATIC.xlsx
CS.xlsx
Data.xlsx
EA65.xlsx
edge.xlsx
fe10.xlsx
FV3P.xlsx
G!.xlsx
GZ7P.xlsx
HE6P.xlsx
IF.xlsx
IF27.xlsx
Lot.xlsx
SR.xlsx
Test.xlsx
WOP.xlsx

Schließlich zählt der folgende Codeblock alle vorhandenen Dateien, die mit unserer Suchnamenszeichenfolge übereinstimmen.

Für den folgenden Codeblock wird die Anzahl aller .xlsx-Dateien ausgegeben, bei denen der Dateiname 1 bis 4 Buchstaben lang ist (????.xlsx).

Sub CountAllFiles(fileToCheck As String)

Dim FileName As String
Dim fileCnt As Long

FileName = Dir(fileToCheck, vbNormal)

Do While FileName <> ""

    fileCnt = fileCnt + 1
    FileName = Dir()
Loop

Debug.Print "There are " & fileCnt & " existing files matched with the criteria."

End Sub

Sub test5()

Call CountAllFiles("????.xlsx")

End Sub

test5-Ausgabe:

There are 16 existing files matched with the criteria.

Verwandter Artikel - VBA File