Dateien und Ordner rekursiv mit Excel VBA auflisten


Datum der Veröffentlichung:

Aktualisiert:


Fachartikel > Dateien und Ordner rekursiv mit Excel VBA auflisten

Status 2026 und sichere Verwendung

Schlussfolgerung: Rufen Sie jeden Ordner rekursiv auf, geben Sie die benötigten Dateien aus und übergeben Sie jeden untergeordneten Ordner wieder an dieselbe Prozedur. Fügen Sie eine explizite Fehlerbehandlung und eine Richtlinie für Junctions, symbolische Links, versteckte Ordner und Pfade mit verweigertem Zugriff hinzu.

Was Sie lernen werden

  • Wie FileSystemObject Ordner, Unterordner, Dateien, Namen und Pfade verfügbar macht.
  • Wie Rekursion einen vollständigen Baum aufbaut und warum tiefe oder zyklische Bäume Schutzmaßnahmen benötigen.
  • So schreiben Sie Ergebnisse in ein Arbeitsblatt, ohne langsame Zelle-für-Zelle-Operationen in großem Maßstab durchzuführen.

Für wen ist dies gedacht: Excel-Benutzer, die einen kontrollierten Windows-Verzeichnisbaum inventarisieren.

Stand 2026: Das Beispiel spiegelt den ursprünglichen lokalen Test des Autors wider. Überprüfen Sie Berechtigungen und Linkverhalten für eine Kopie Ihrer Verzeichnisstruktur und ziehen Sie PowerShell oder ein spezielles Inventarisierungstool für sehr große oder sicherheitsempfindliche Bäume in Betracht.

Sicherheitshinweis: Die Befehle und Konfigurationsbeispiele im Originalartikel wurden nicht in einer aktuellen Produktionsumgebung erneut ausgeführt. Überprüfen Sie unterstützte Versionen, Backups, Zugriffskontrollen und Rollback-Schritte in einer separaten Testumgebung, bevor Sie sie anwenden.

Offizielle Primärquellen

Überblick

Dieser Artikel zeigt, wie VBA Dateien und Ordner einschließlich Unterordnern auflistet, und behandelt folgende Aufgaben:

  • Alle Dateien oder Ordner unterhalb eines Verzeichnisses mit vollständigem Pfad auflisten.
  • Sie möchten die Verarbeitung in einer Schleife für Dateien oder Ordner unter einem Ordner durchführen.

Inhaltsübersicht

  1. Programmiermethode
  2. Code Beschreibung.
  3. Zusammenfassung

1. Programmiermethode

Nachstehend finden Sie Beispiele für die Programmierung.

Da es in Function erstellt wird, würde ich es gerne so kopieren, wie es ist, und die Methodenaufrufe von Sub ausführen lassen.

'Parameter Examples
'## filePath      C:\Users\user\Desktop\test\
'## kind          false:folder, true:file
'## list
Function getFolderOrFile(filePath As String, kind As Boolean, list As Collection) As Collection
 
'delete\
Dim filePathEnd As String
filePathEnd = Right(filePath, 1)
If filePathEnd = "\" Then
  filePath = Left(filePath, Len(filePath) - 1)
End If
 
'Folder existence check
Dim result As String
result = Dir(filePath, vbDirectory)
If result = "" Then
  MsgBox "File does not exist!"
  Exit Function
End If
 
If kind Then
  Dim buf As String
  buf = Dir(filePath & "\*.*")
  Do While buf <> ""
    list.Add filePath & "\" & buf
    buf = Dir()
  Loop
Else
  list.Add filePath
End If
 
Dim folder As Object
With CreateObject("Scripting.FileSystemObject")
  For Each folder In .GetFolder(filePath).SubFolders
    getFolderOrFile folder.Path, kind, list
  Next folder
End With
 
End Function

Um es zu verwenden, geben Sie die folgenden Argumente an.

  • filePath: Verzeichnis. Beispiel.)C:\Users\user\Desktop\test
  • kind: Pass true, false. Bei True wird eine Liste von Dateien zurückgegeben. Wenn false, wird eine Liste von Ordnern zurückgegeben.
  • list: Die Sammlung wird zur Speicherung der Ergebnisse verwendet. Im Folgenden wird ein Beispiel für eine Implementierung gegeben.

Ein Beispiel für die Implementierung eines aktuellen Funktionsaufrufs ist unten dargestellt.

Sub test()
 
Dim list As Collection
Set list = New Collection
getFolderOrFile "C:\Users\user\Desktop\test", False, list
Dim item As Variant
For Each item In list
  '------TODO------
  ThisWorkbook.Worksheets(1).Cells(1, 1).Value = item
Next
 
End Sub

Der Aufruf von getFolderOrFile speichert eine Liste von Dateien oder eine Liste von Ordnern in list. Das Umsetzungsbeispiel ist False, also wird die Liste der Ordner gespeichert.

Beschreiben Sie den Prozess, den Sie durchführen möchten, im Abschnitt "TODO" in der For-Anweisung. ITEM kann wie eine String-Variable behandelt werden.

Die Referenzquelle ist der Prozess der Einstellung der erfassten Liste auf A1 in Excel. (Der Prozess überschreibt wiederholt dieselbe Zelle.)

2. Code Beschreibung.

Dies ist das Ende der Anleitung zur Verwendung des Systems, gefolgt von einer Erläuterung des Codes.

Die Details sind im Code zu sehen, aber der wichtigste Punkt ist der weitere Aufruf von getFolderOrFile in der getFolderOrFile-Methode.

Bei der Suche nach Ordnern wird der Prozess weiter wiederholt, indem der Prozess der Suche nach Ordnern aufgerufen wird, der ein Mechanismus zur Suche nach allen Ordnern ist.

Indem er seine eigene Methode aufruft, ruft er wiederholt seine eigene Methode auf, solange der Ordner gefunden wird, und durchsucht alle Ordner.

3. Zusammenfassung

Wenn Sie Hilfe benötigen, um mit VBA (Excel-Makros) eine Liste von Dateien und eine Liste von Ordnern, einschließlich Unterordnern, zu erhalten, lesen Sie bitte diesen Abschnitt.