Anders als der Name „Visual Basic für Applikationen“ vermuten lässt, kann VBA nicht nur auf Applikationen, sondern auch auf das Dateisystem zugreifen. Da in der Praxis häufig jeweils mehrere der folgenden Befehle zusammen benötigt werden, folgt hier nur ein Beispiel für mehrere Befehle gemeinsam.
Diese Befehle sind eigentlich veraltet. Für einen moderneren, objektbasierten
Zugriff wurde das FileSystemObject
eingeführt. Aber die folgenden Befehle sind oft bequemer zu benutzen, und wenn
z. B. der Befehl Dir mit Platzhalterzeichen verwendet wird,
ist er in der Praxis schneller als eine entsprechende Schleife zur Auswertung eines
Filesystemobjects.
Für einige Befehle gilt ein Laufwerk als aktuelles Laufwerk, und in jedem Laufwerk ein Verzeichnis als aktuelles Verzeichnis. Die folgende Prozedur gibt einige Informationen aus einem Verzeichnis im Debug-Fenster aus.
Sub Dateien() Dim Datei As String ChDrive "c" ChDir "C:\Windows" Datei = Dir(CurDir & "\") Do Until Datei = "" Debug.Print Datei, GetAttr(Datei), FileDateTime(Datei), FileLen(Datei) Datei = Dir Loop End Sub
ChDir Path As String
Wechselt das aktuelle Verzeichnis. Wenn in Path
keine Laufwerksbezeichnung
enthalten ist, ist das aktuelle Laufwerk betroffen, ansonsten
das angegebene Laufwerk. Es sind auch relative Pfadangaben erlaubt.
ChDrive Drive As String
Wechselt das aktuelle Laufwerk. Drive
muss
mit einem Buchstaben beginnen, weitere Zeichen werden ignoriert. Der Buchstabe muss
einer gültigen Laufwerksbezeichnung entsprechen.
CurDir([Drive As Variant]) As Variant
Gibt das aktuelle Verzeichnis zurück. Ist Drive
nicht angegeben,
wird das aktuelle Verzeichnis des aktuellen
Laufwerks zurückgegeben. Wenn Drive
angegeben ist, muss es mit
einem Buchstaben beginnen, weitere Zeichen werden ignoriert. Der Buchstabe muss
einer gültigen Laufwerksbezeichnung entsprechen.
Dir([PathName As Variant, [Attributes As VbFileAttribute = vbNormal]]) As String
Gibt den Namen einer Datei, eines Laufwerks oder eines Verzeichnisses zurück,
auf die das Suchmuster aus PathName
passt. Falls PathName
keine Laufwerks- und Verzeichnisangaben enthält, wird auf
CurDir
zugegriffen. Auch die Platzhalterzeichen
?
(für ein einzelnes Zeichen) und *
(für beliebig viele
Zeichen) sind möglich. Wird Pathname
angegeben, kann mit Werten aus
der Aufzählung VbFileAttribute
die Suche auf Dateiattribute ausgedehnt werden. Mehrere dieser Werte können addiert
werden.
Beim ersten Aufruf von Dir
muss zwingend ein Pathname
angegeben werden. Um weitere Dateinamen zu erhalten, die dem Suchmuster entsprechen,
kann Dir
danach ohne Argumente erneut aufgerufen werden, bis die
Zeichenfolge ""
zurückgegeben wird.
Die Reihenfolge, in der Dir
Dateien zurückgibt, ist zufällig.
In der Praxis werden die Rückgabewerte häufig in einem Array abgespeichert und
dort sortiert bzw. in sonstiger Weise verarbeitet.
FileDateTime(PathName As String) As Variant
Gibt Datum/Zeit der letzten Änderung von PathName
zurück.
PathName
muss der Name einer existierenden Datei oder Verzeichnisses
sein. Falls PathName
keine Laufwerks- und Verzeichnisangaben enthält,
wird auf CurDir
zugegriffen.
FileLen(PathName As String) As Long
Gibt die Größe von PathName
zurück. PathName
muss der
Name einer existierenden Datei oder Verzeichnisses sein (Bei Verzeichnisen wird
natürlich immer „0“ zurückgegeben). Falls PathName
keine Laufwerks-
und Verzeichnisangaben enthält, wird auf CurDir
zugegriffen.
GetAttr(PathName As String) As VbFileAttribute
Gibt die Dateiattribute von PathName
zurück. PathName
muss der Name einer existierenden Datei oder Verzeichnisses sein. Falls
PathName
keine Laufwerks- und Verzeichnisangaben enthält, wird auf
CurDir
zugegriffen.