Überprüfen ob Datei oder Verzeichnis existiert

Datei/Verzeichnis existiert ?

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

  1. 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

  2. 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert