Mit VBA prüfen, ob eine Datei vorhanden ist
-
Verwenden Sie die Funktion
Dir()
, um mit VBA zu prüfen, ob die Datei auf dem Computer vorhanden ist -
Einführung von Platzhaltern in der Funktion
Dir()
, um mit VBA zu prüfen, ob eine Datei/S auf Ihrem Computer vorhanden ist - Abrufen/Zählen aller auf dem Computer vorhandenen Namen mit VBA
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.