Prüfen ob Datei existiert / vorhanden ist
Veröffentlicht am 26.08.2008 von Sebastian Krogolewski
Um zu überprüfen ob eine Datei existiert, gibt es mehrere Möglichkeiten. In diesem Artikel werden 2 dieser Möglichkeiten gezeigt. Einmal über das Scripting.FileSystemObject und als Alternative über die Win API Funktion PathFileExistsA bzw. PathFileExistsW und PathIsDirectoryA bzw. PathIsDirectoryA aus der Shlwapi.Dll.
Als erstes wird der Weg über das Scripting.FileSystemObject gezeigt. Diese Funktion benötigt einen Verweis auf die Microsoft Scripting Runtime.
1
2
3
4
56
7
| Private Function FileExists(ByVal uFileName As String) As Boolean Dim fso As Scripting.FileSystemObject Set fso = New Scripting.FileSystemObject FileExists = fso.FileExists(uFileName)Set fso = Nothing End Function |
FileExists erwartet 1 Parameter:
uFileName: Der Pfad + Dateiname welcher überprüft werden soll.
Rückgabewert:
True: Datei ist vorhanden
False: Datei ist nicht vorhanden
und als Alternative dazu eine Funktion, welche die Win API Funktionen PathFileExistsA bzw. PathFileExistsW und PathIsDirectoryA bzw. PathIsDirectoryA verwendet.
MAX_PATH Konstante definieren:
1 | Private Const MAX_PATH As Long = 260 |
Einbinden der beiden Win API Funktionen PathFileExistsA bzw. PathFileExistsW und PathIsDirectoryA bzw. PathIsDirectoryA aus der Shlwapi.Dll:
1 2 | Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long Private Declare Function PathIsDirectory Lib "shlwapi.dll" Alias "PathIsDirectoryA" (ByVal pszPath As String) As Long |
PathFileExistsA erwartet 1 Parameter:
pszPath: Zeiger auf einen String (mit NULL abschließend), in dem der zu überprüfende komplette Pfad eines Dateisystem Objekts steht. Max. Länge ist MAX_PATH.
Rückgabewert:
1: Datei existiert.
0: Datei ist nicht existent oder es ist ein Fehler aufgetreten. Zusätzliche Informationen zum aufgetretenen Fehler können mit GetLastError abgerufen werden.
PathIsDirectoryA erwartet 1 Parameter:
pszPath: Zeiger auf einen String (mit NULL abschließend), in dem der zu überprüfende Pfad steht. Max länge ist MAX_PATH.
Rückgabewert:
1: Pfad ist ein gültiges Verzeichnis.
0: Pfad ist kein gültiges Verzeichnis.
Funktion:
1
2
3
4
56
| Private Function FileExists(ByVal uFileName As String) As Boolean 'Wenn uFilename kein gültiges Verzeichnis ist aber der Pfad zum Dateisystemobjekt existent 'dann ist es eine Datei die auch vorhanden ist FileExists = ((PathFileExists(uFileName) <> 0) And (PathIsDirectory(uFileName) = 0))End Function |
Für beide Funktionen gilt folgender Beispielaufruf:
1
2
3
4
5 | If (FileExists("C:\Dokumente und Einstellungen\Benutzer\Eigene Dateien\test.txt")) Then MsgBox "Datei ist vorhanden" Else MsgBox "Datei ist nicht vorhanden" End If |






