Liste aller Dateien eines Ordners erzeugen

Auf Ihrem Computer haben sich mit der Zeit zahlreiche Dateien verschiedener Typen angesammelt. Sie wollen die vorhandenen Dateien eines Ordners, zum Beispiel alle MP3- oder JPG-Dateien, erfassen und übersichtlich in einer Liste verwalten. Dazu möchten Sie die DateiInformationen automatisch in eine
Tabelle oder Datenbank einlesen.

Mit einer VBA-Programmierung können Sie den Inhalt von Ordnern direkt nach Excel auslesen und die gewünschten Informationen in einer Tabelle zusammenstellen.

Öffnen Sie in Excel eine neue Arbeitsmappe und führen Sie »Extras | Makro | Makros« aus. Geben Sie als Makronamen zum Beispiel »Suchen« ein und klicken Sie anschließend auf die Schaltfläche »Erstellen«. Im VBA-Editor geben Sie nun folgende Makrozeilen ein oder Sie laden sich das Makro von CHIP Online: Web-Code PRAXIS0801



Dim z, unterordner As Variant

Sub Suchen()

Dim Laufwerk, Dateien As String
z = 2
æTabellenbereich löschen
[a1:d4000] = äô
Laufwerk = äC:\ô
Laufwerk = InputBox(äIn welchem Ordner wollen Sie suchen:ô, äLaufwerk & Ordnerô, äC:\ô)

If Laufwerk = äô Then Exit Sub
Unterordner = MsgBox(äUnterordner mit einbeziehen?ô, vbYesNo, äUnterordnerô)
Dateien = ä*.*ô
Dateien = InputBox(äNach welchen Dateien wollen Sie suchen:ô, äDateitypô, ä*.*ô)

If Dateien = äô Then Exit Sub
Dateisuche Laufwerk, Dateien
End Sub

Sub Dateisuche(Laufwerk, Dateien)
Dim temp, wdhlg, Dateiname As String
On Error Resume Next

If Right(Laufwerk, 1) <> ä\ô Then Laufwerk = Laufwerk + ä\ô
temp = Dir(Laufwerk & Dateien)

Do While Len(temp)
Dateiname = Laufwerk & temp
Application.StatusBar = Dateiname
Cells(z, 1).Select
Cells(z, 1) = Laufwerk & temp
Cells(z, 2) = FileLen(Laufwerk & temp)
Cells(z, 3) = FileDateTime(Laufwerk & temp)
Cells(z, 4) = temp
z = z + 1
temp = Dir()
Loop

temp = Dir(Laufwerk, vbDirectory)
If unterordner = vbNo Then temp=ôä

Do While Len(temp)
If (temp <> ä.ô) And (temp <> ä..ô) Then
If (GetAttr(Laufwerk & temp) And vbDirectory) = vbDirectory Then
Dateisuche Laufwerk & temp, Dateien
z = z - 1
wdhlg = Dir(Laufwerk, vbDirectory)
z = z + 1
Do While wdhlg <> temp
wdhlg = Dir()
Loop
End If
End If
temp = Dir()
Loop

On Error GoTo 0
Application.StatusBar = False

End Sub


Das Programm besteht aus den Unterprogrammen »Suchen« und »Dateisuche«. Zunächst definieren Sie für beide Prozeduren gemeinsam die Variablen »z« und »Unterordner«. Dann weisen Sie ihr im ersten Teil einen Wert zu. Er bestimmt die Zeile der Tabelle, ab welcher später die Dateien stehen. Der folgende Befehl löscht den kompletten Tabellenbereich. Anschließend erzeugen Sie einen kurzen Dialog, der einige Einstellungen abfragt. Dazu gehören der Name des Ordners, die Frage, ob Unterordner einbezogen werden sollen und welche Dateitypen aufzulisten sind. Die zuvor zugewiesenen Werte erscheinen jetzt als Vorgabe im Dialog. Wenn Sie keine Eingabe machen, ist das Programm an dieser Stelle zu Ende. Andernfalls ruft VBA das Unterprogramm »Dateisuche« auf und startet damit als nächstes den direkten Suchvorgang.

Das Unterprogramm ergänzt bei Bedarf einen fehlenden Backslash am Ende des Pfades und liest dann das Verzeichnis dieses Ordners in die Variable »temp« ein. Als nächstes erhöht sich der Zeilenzähler jeweils um eins. Solange die Variable »temp« neue Datei-Informationen erhält, übertragen die folgenden Befehle diese Informationen in die jeweils aktuelle Zeile der Excel-Tabelle.

Der folgende Befehl »temp=Dir(Laufwerk, vbDirectory)« sucht alle Unterordner. Wenn Sie die Unterordner weglassen wollen, entfernt das Programm diese wieder aus der Suchliste. Sofern es sich nicht um die Systemordner ».« und »..« handelt, ruft das Programm nun erneut die Dateisuche auf. Dieser Ablauf wiederholt sich für alle Unterordner, bis jede Datei in der Tabelle gelistet ist.