VBA bietet eine Reihe von Dateibefehlen, mit denen Sie Verzeichnisse anlegen, Verzeichnisse entfernen, das aktuelle Arbeitsverzeichnis ermitteln, das Arbeitsverzeichnis ändern, Dateien löschen und sogar komplette Verzeichnishierarchien neu anlegen. Dieser Artikel liefert die Grundlagen zu diesen Befehlen.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1206_Dateibefehle.mdb.
Dateizugriffe
Der Artikel Textdateien stellt die Möglichkeiten zum Erstellen und zum Lesen von Textdateien vor. Dort gibt es eine Methode namens Open, die je nach Dateimodus eine bestehende Textdatei öffnet oder eine neue Datei erstellt. Was hat das mit dem vorliegenden Artikel zu tun Ganz einfach: Die Open-Anweisung erwartet die Angabe des Dateinamens. Dabei können Sie wählen zwischen der Angabe des Dateinamens inklusive Verzeichnis oder nur des Dateinamens. Wenn Sie das Verzeichnis mit angeben, ist genau definiert, auf welche Datei die Open-Anweisung sich beziehen soll. Falls aber wie im folgenden Beispiel nur ein Dateiname angeben wurde, ermittelt VBA selbst den Pfad:
Open "Test.txt" For Input As #1
Aktuelles Verzeichnis ermitteln
Und woher bezieht VBA den Ort der betroffenen Datei Dieser wird intern gespeichert und kann über die Funktion CurDir ausgelesen werden. Ein Aufruf im Direktfenster des VBA-Editors sieht beispielsweise wie folgt aus:
Debug.Print CurDir
C:\Users\Andre\Documents
Das bedeutet, dass die Open-Anweisung dem Dateinamen ohne Angabe eines Verzeichnisses die intern gespeicherte und mit CurDir zu ermittelnde Pfadbezeichnung voranstellt.
Aktuelles Verzeichnis ändern
Wenn sich die Dateioperationen innerhalb einer Anwendung immer auf das gleiche Verzeichnis beziehen, ist es sinnvoll, dieses Verzeichnis an die eigenen Bedürfnisse anzupassen. Da trifft es sich gut, dass VBA mit ChDir auch eine Funktion zum Festlegen eines neuen aktuellen Verzeichnisses liefert. Sie können den Wert von CurDir beispielsweise auf den Pfad zur aktuell geöffneten Datenbank einstellen:
ChDir Currentproject.Path
Die anschließende Prüfung liefert das erwartete Ergebnis:
Debug.Print CurDir
C:\Daten\Fachartikel\AiUBasic\Basics\2012\06\Dateibefehle
CurDir liefert für jedes Laufwerk ein eigenes aktuelles Verzeichnis. Um das aktuelle Verzeichnis eines anderen Laufwerks als c:\ zu ermitteln, geben Sie den Laufwerksbuchstaben in Anführungszeichen als Parameter der CurDir-Funktion an:
Debug.Print CurDir("h")
h:\Daten
Wenn Sie das aktuelle Verzeichnis für ein bestimmtes Laufwerk ändern möchten, geben Sie einfach den kompletten Pfad samt Laufwerksbuchstaben an:
ChDir("h:\Daten\Accessprojekte")
Wie die folgende Prüfung ergibt, funktioniert es:
Debug.Print CurDir("h")
h:\Daten\Accessprojekte
CurDir liefert ohne Parameter standardmäßig das aktuelle Verzeichnis des Laufwerks c:\. Wenn Sie möchten, dass CurDir ohne Parameter das aktuelle Verzeichnis eines anderen Laufwerks liefert, stellen Sie das Standardlaufwerk entsprechend mit der Funktion ChDrive ein:
ChDrive "h"
CurDir liefert dann Folgendes:
Debug.Print CurDir
h:\Daten\Accessprojekte
Dateien löschen
Während die im Artikel Textdateien vorgestellte Open-Anweisung nicht nur zum öffnen, sondern auch zum Anlegen von Textdateien genutzt werden kann, fehlt noch ein Pendant zum Löschen von Dateien – in diesem Fall nicht nur von Textdateien. Diese Methode heißt Kill. Diese Methode erwartet lediglich den Dateinamen als Parameter:
Kill CurrentProject.Path & "\test.txt"
Wenn Sie keinen Pfad angeben, verwendet auch die Kill-Methode das mit CurDir ermittelte Verzeichnis.
Verzeichnis erstellen
Neue Verzeichnisse erstellen Sie mit der Methode MkDir. Wenn Sie MkDir nur den Namen des zu erstellenden Verzeichnisses übergeben, also etwa wie im folgenden Aufruf, erzeugt VBA – Sie ahnen es bereits – das neue Verzeichnis im mit CurDir zu ermittelnden aktuellen Verzeichnis:
MkDir "Test"
Obiger Aufruf würde also das Verzeichnis c:\Daten\Test erzeugen, wenn CurDir das Verzeichnis c:\Daten liefert. Dabei können übrigens kaum Fehler auftreten – im Gegensatz zur Variante mit Angabe des Verzeichnisses. Wenn Sie beispielsweise zwei verschachtelte Unterverzeichnisse namens Test1 und Test2 unter c:\Daten erzeugen möchten, gelingt dies nicht in einem einzigen Schritt – Sie erhalten dann nämlich den Fehler aus Bild 1.
Bild 1: Fehler beim Versuch, zwei Verzeichnisse auf einmal zu erstellen
Stattdessen erledigen Sie diese Aufgabe in zwei Schritten:
MkDir "c:\Daten\Test1" MkDir "c:\Daten\Test1\Test2"
Löschen von Verzeichnissen
Das Löschen eines Verzeichnisses erledigen Sie mit der RmDir-Methode. Auch diese erlaubt nur das Löschen eines Verzeichnisses gleichzeitig, genau genommen sogar nur das Löschen leerer Verzeichnisse.
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: