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.