Manchmal ist es notwendig, das in einem Ablauf geprüft wird, ob eine Datei oder Verzeichnis existiert. Dieses Vorgehen kommt zum Beispiel vor, wenn man Daten aus einer bestehenden Datei importierten möchte. Ein zweites Szenario wäre, das man eine bestehende Datei nicht überschreiben möchte, sondern nur erweitern oder ändern. Um jetzt überprüfen zu können, ob die Datei oder das Verzeichnis existieren, nehmen wir uns die Typbibliothek Scripting zur Hilfe und nutzen „FileSystemObject“ in der folgenden Funktion :
Public Function DateiVorhanden(strDatei As String) Dim objFSO As Object Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FileExists(strDatei) = True Then DateiVorhanden = True Else DateiVorhanden = False End If Set objFSO = Nothing End Function
Als erstes erstellen wir das Objekt Scripting.FileSystemObject. Danach wird das Ereignis FileExists aufgerufen mit dem übergebenen Pfad aus der Variable strDatei. Ist die Datei oder das Verzeichnis vorhanden, so gibt die Funktion DateiVorhanden Wahr (True) zurück. Existiert die Datei oder das übergebene Verzeichnis nicht, so ist der Rückgabewert Falsch (False).
Diese Funktion kann auch entsprechend umgebaut werden, das sie nicht Wahr oder Falsch zurückgibt, sondern auf Grund der Existenz eine entsprechende Aktion ausführt.
Ein Aufruf der Funktion DateiVorhanden sieht wie folgt aus : (Beispiel)
Sub Test() Dim strDatei As String strDatei = "C:\Test.txt" MsgBox DateiVorhanden(strDatei) End Sub
Diese kleine Testfunktion gibt in einer Message-Box Falsch oder Wahr zurück, je nachdem ob die Datei Test.txt auf dem Laufwerk C existiert oder nicht. Wenn Sie eine andere Datei oder Verzeichnis überprüfen wollen, müssen Sie nur den Wert der Variable strDatei entsprechend ändern.
5 Gedanken zu „Überprüfen ob Datei oder Verzeichnis existiert“
Hier wird nur überprüft ob die Datei vorhanden ist. Mit der Überprüfung des Verzeichnisses klappt es nicht!
Für die Überprüfung des Verzeichnisses, einfach anstatt FileExists die Methode
FolderExists verwenden.
Hallo guten Abend,
habe einen kleinen Tippfehler in der Funktion: DateiVorhanden()
und zwar am Ende die Zeile:
————
End If
Set obFSO = Nothing
End Function
———–
wäre
Set objFSO = Nothing
da dürfte das „j“ verloren gegangen sein.
Mit freundlichen Grüßen
Ladislaus PAL
Vielen Dank für den Hinweis. Ich habe es schon im Beitrag korrigiert.
Hallo, die Datei, die ich auf Existenz überprüfen möchte, liegt auf dem OneDrive-Ordner (D:\OneDrive_Joerg\OneDrive\)
Mit
strFile = ActiveWorkbook.Path & „\Mitglieder-Liste.xlsx“
bekomme ich ein ellenlanges krytisches Gebilde heraus:
https://d.docs.live.net/759624847cb7824a/TBB/BookAndPlay\Mitglieder-Liste.xlsx
Der im Explorer lesbare Pfad heißt:
D:\OneDrive_Joerg\OneDrive\TBB\BookAndPlay
und
If Dir(strFile)
gibt ein false zurück
Mache ich das auf einem „normalen“ Ordner (D:\temp), bekomme ich den lesbaren Namen und dir() gibt ein „Wahr“ zurück.
Wie bekommt man den Klarnamen heraus, wenn man ein OneDrive-Laufwerk benutzt. Das wird doch fast nur noch verwendet, nehme ich einmal an. Vielen Dank schon einmal im Voraus.