Hier etwas für die Puristen, die nichts von der Windows API halten
Mit der Funktion ExistFileDirDrive könnt ihr die Existenz sowohl von Dateien, Verzeichnissen als auch Laufwerken prüfen. Bei der Prüfung der Existenz eines Verzeichnisses ist es egal, ob der übergebene Pfadname mit einem Backslash "\" abschließt oder nicht. Die Funktion kommt auch ohne weiteres mit UNC-Pfadangaben zurecht.
Zur Prüfung der Existenz eines Laufwerks könnt ihr nicht nur "nackte" Laufwerksbuchstaben oder Laufwerksbuchstaben plus Doppelpunkt zur Prüfung übergeben, sondern auch beliebige Verzeichnis- oder Datei-Pfade - existiert ein Verzeichnis oder eine Datei, existiert zwangsläufig auch das Laufwerk. Das gilt natürlich auch bei der Frage nach der Existenz eines Pfades - existiert eine Datei in einem Pfad, existiert ebenso das Verzeichnis, in dem sie sich befindet. Die letzten beiden Anmerkungen mögen Ihnen zwar trivial und überflüssig vorkommen - aber manchmal kommt man einfach nicht auf die trivialsten Lösungen, oder...?
Im Gegensatz zu vielen Lösungen, die bei der Prüfung der Existenz einer Datei diese zu öffnen versuchen, greift die Funktion ExistFileDirDrive auf die Dateiattribute zu (GetAttr). Damit werden Probleme mit Dateisperrungen, zufälliger Erzeugung doch noch nicht vorhandener Dateien und mit den Zeitattributen (Anlegen, letzte Modifikation) vermieden.
(
http://www.eknori.de/downloads/ExistFileDirDrive.zip )
Sub Click(Source As Button)
Dim dummy As Integer
dummy = ExistFileDirDrive("c:\my downloads")
If dummy > 0 Then
Msgbox "Yoo, ist da"
Else
Msgbox "Nö, nicht gefunden"
End If
End Sub
Function ExistFileDirDrive(FilePathName As String) As Integer
Dim nTest As String
nTest = Lcase$(FilePathName)
If Len(nTest) = 1 Then
Select Case Left$(nTest, 1)
Case "a" To "z"
nTest = FilePathName & ":\"
End Select
Elseif Len(nTest) = 2 Then
Select Case Left$(nTest, 2)
Case "a:" To "z:"
nTest = FilePathName & "\"
End Select
End If
On Error Resume Next
ExistFileDirDrive = Cint(Getattr(nTest) Or vbNormal _
Or vbHidden Or vbSystem Or vbArchive Or vbDirectory)
End Function