Home > Artikel > Ausgabe 7/2012 > Die Dir-Funktion

Die Dir-Funktion

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Die Dir-Funktion ist ein echter Tausendsassa: Sie ermöglicht sowohl das Prüfen des Vorhandenseins von Dateien als auch das Ermitteln von Dateien innerhalb eines Verzeichnisses. Dabei gilt es jedoch, einige Klippen zu umschiffen: Anderenfalls treten schnell nicht erklärbare Fehler in Ihrer Datenbank auf. Dieser Beitrag zeigt, wie Sie die Dir-Funktion für verschiedene Anwendungszwecke einsetzen.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1207_Dir.mdb.

Vorhandensein von Verzeichnissen oder Dateien prüfen

Ein einfacher Aufruf der Dir-Funktion, beispielsweise im Direktfenster des VBA-Editors abgesetzt (zu öffnen mit Strg + G, siehe Bild 1), löst einen Fehler aus:

Dir()

Und das, obwohl IntelliSense die Parameter dieser Funktion bei der Eingabe im Direktfenster in eckigen Klammern anzeigt, was schlicht bedeutet, dass es sich dabei um optionale Parameter handelt (siehe Bild 1).

IntelliSense zeigt die Parameter als optional an

Bild 1: IntelliSense zeigt die Parameter als optional an

Der Grund ist, dass diese Funktion zumindest beim ersten Aufruf einen Ausdruck für den ersten Parameter erwartet. Hier geben Sie im einfachsten Fall eine leere Zeichenkette an:

Dir("")

Dies liefert die erste Datei des aktuellen Verzeichnisses. Welches Verzeichnis hiermit gemeint ist, erfahren Sie durch den Aufruf der Funktion CurDir. Dies liefert beispielsweise folgendes Ergebnis:

  CurDir

C:\Users\Andre\Documents

Auf das in CurDir hinterlegte Verzeichnis sollten Sie sich jedoch nicht verlassen, sondern stattdessen explizit angeben, auf welches Verzeichnis oder auf welche Datei sich die Dir-Funktion beziehen soll (Sie können natürlich auch die ChDir-Funktion nutzen, um das aktuelle Verzeichnis festzulegen).

Wenn Sie prüfen möchten, ob ein Verzeichnis oder eine Datei existiert, geben Sie den Verzeichnis- oder Dateinamen inklusive Pfad als Parameter an. Um zum Beispiel herauszufinden, ob eine Datei existiert, geben Sie den kompletten Pfad wie folgt an:

Dir("c:\Test.txt")

Sollte es eine entsprechende Datei im Verzeichnis c:\ geben, liefert diese Funktion den Namen der Datei ohne Pfad als Ergebnis, also etwa Text.txt.

Wenn Sie hingegen die Existenz eines Verzeichnisses prüfen möchten, müssen Sie zusätzlich den Wert vbDirectory für den zweiten Parameter der Dir-Funktion übergeben:

  Dir(CurrentProject.Path, vbDirectory)

VBA_Dir

Da CurrentProject.Path in diesem Fall den Wert C:\Daten\Fachartikel\AiUBasic\Basics󡆜⏷\VBA_Dir enthält, liefert die Funktion den Namen des aktuellen Verzeichnisses zurück, also VBA_Dir.

Sie können vbDirectory allerdings auch angeben, wenn Sie das Vorkommen eines Dateinamens prüfen möchten – dies untersucht sowohl Datei- als auch Verzeichnisnamen.

Dateien und Verzeichnisse ermitteln

Etwas anders sieht die Vorgehensweise aus, wenn Sie die Dateien und Verzeichnisse innerhalb eines vorgegebenen Verzeichnisses ermitteln möchten.

Um etwa die erste gefundene Datei im Verzeichnis c:\Beispiel zu ermitteln, müssen Sie den Verzeichnisnamen inklusive eines angehängten Backslash angeben. Der Aufruf sieht dann so aus:

Dir("c:\Beispiel\")

Möchten Sie auch Verzeichnisnamen in die Suche einbeziehen, fügen Sie wiederum den Parameter vbDirectory hinzu:

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!