Hauptseite >Tips zu VB5/6 >  Vorhandensein eines Ordners prüfen     view this document in English view this document in English
 
Die folgende Funktion prüft das Vorhandensein eines Ordners, ohne dass Hilfsmittel wie das FSO benötigt werden. Falls der Ordner nicht existiert oder auf ein nicht bereites Laufwerk zugegriffen wird, greift die Fehlerbehandlung.
Die häufig verwendete Methode "If Dir$(Filename, vbDirectory) <> "" Then ..." ist nicht zu empfehlen, da die Dir$-Funktion nicht reentrant ist, d.h. der Aufruf innerhalb einer Dir$-Schleife würde diese äussere Schleife terminieren.

Public Function FolderExists(ByVal Path as String) As Boolean
Dim i As Integer
Err.Clear
On Error Resume Next
i = GetAttr(Path)
  If Err.Number = 0 Then
    FolderExists = CBool(i And vbDirectory)
  End If
On Error GoTo 0
End Function
            

Update: Wie im Artikel "Vorhandensein einer Datei prüfen" gezeigt, ist die Funktion GetAttr() den Feinheiten moderner Dateisysteme nicht mehr ganz gewachsen. Es empfiehlt sich daher auch hier, die von GetAttr() gekapselte API-Funktion GetFileAttributes() direkt aufzurufen:
Public Declare Function GetFileAttributes Lib "kernel32" _
  Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
Public Const INVALID_FILE_ATTRIBUTES As Long = -1

Public Function FolderExists(ByVal Filename As String) As Boolean
Dim l As Long
l = GetFileAttributes(Filename)
  If l <> INVALID_FILE_ATTRIBUTES Then
    FolderExists = CBool(l And vbDirectory)
  End If
End Function
            
Hauptseite >  Tips zu VB5/6 >  diese Seite