Dateien in Ordner auflisten mit Excel VBA
Schritt-für-Schritt-Anleitung
Um alle Dateien eines Ordners in Excel aufzulisten, kannst Du ein VBA-Makro verwenden. Folge diesen Schritten:
-
Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
-
Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
-
Kopiere den folgenden VBA-Code in das Modul:
Sub DateienInOrdnerAuflisten()
Dim verz As String
Dim fs As Object
Dim fVerz As Object
Dim fDatei As Object
Dim objFiles As Object
verz = Sheets("Eingaben").Cells(14, 4) ' Pfad zum Ordner
Set objFiles = CreateObject("Scripting.Dictionary")
Set fs = CreateObject("Scripting.FileSystemObject")
Set fVerz = fs.GetFolder(verz)
Set fDateien = fVerz.Files
For Each fDatei In fDateien
objFiles(fDatei.Name) = 0
Next fDatei
Sheets("Inhalt Tagesordner").Cells(1, 1).Resize(objFiles.Count) = WorksheetFunction.Transpose(objFiles.keys)
End Sub
-
Ändere den Wert in Sheets("Eingaben").Cells(14, 4) auf die Zelle, die den Pfad Deines Zielordners enthält.
-
Schließe den VBA-Editor und kehre zu Excel zurück.
-
Führe das Makro aus, um alle Dateinamen im angegebenen Arbeitsblatt aufzulisten.
Häufige Fehler und Lösungen
Alternative Methoden
Eine alternative Methode, um den Ordnerinhalt in Excel aufzulisten, ist die Verwendung der Dir-Funktion:
Sub DateinamenMitDirAuflisten()
Dim verz As String
Dim datei As String
Dim zeile As Integer
verz = Sheets("Eingaben").Cells(14, 4) ' Pfad zum Ordner
datei = Dir(verz & "\*.*")
zeile = 1
Do While datei <> ""
Sheets("Inhalt Tagesordner").Cells(zeile, 1).Value = datei
datei = Dir
zeile = zeile + 1
Loop
End Sub
Diese Methode kann in manchen Fällen schneller sein, da sie nicht die gesamte FileSystemObject-Bibliothek verwendet.
Praktische Beispiele
Wenn Du die Excel-Ordnerstruktur auflisten möchtest, kannst Du die Unterordner ebenfalls berücksichtigen. Hier ist ein Beispiel:
Sub OrdnerStrukturAuflisten()
Dim verz As String
verz = Sheets("Eingaben").Cells(14, 4)
Call Auflisten(verz, 1)
End Sub
Sub Auflisten(ByVal pfad As String, ByVal tiefe As Integer)
Dim fs As Object
Dim fVerz As Object
Dim fDatei As Object
Dim fUnterverz As Object
Dim zeile As Integer
Set fs = CreateObject("Scripting.FileSystemObject")
Set fVerz = fs.GetFolder(pfad)
zeile = Sheets("Inhalt Tagesordner").Cells(Rows.Count, 1).End(xlUp).Row + 1
For Each fDatei In fVerz.Files
Sheets("Inhalt Tagesordner").Cells(zeile, 1).Value = fDatei.Path
zeile = zeile + 1
Next fDatei
For Each fUnterverz In fVerz.SubFolders
Call Auflisten(fUnterverz.Path, tiefe + 1)
Next fUnterverz
End Sub
Dieses Skript listet alle Dateien und Unterordner im angegebenen Pfad auf.
Tipps für Profis
- Nutze die
Scripting.Dictionary-Klasse, um doppelte Dateinamen zu vermeiden, falls die gleichen Namen in verschiedenen Unterordnern vorkommen.
- Du kannst das Ergebnis in eine Textdatei exportieren, indem Du die
Open- und Print #-Befehle verwendest.
Open "C:\deinPfad\dateien.txt" For Output As #1
For Each fDatei In fDateien
Print #1, fDatei.Name
Next fDatei
Close #1
FAQ: Häufige Fragen
1. Wie kann ich nur bestimmte Dateitypen auflisten?
Du kannst die If-Bedingung im Code anpassen, um nur Dateien mit bestimmten Endungen aufzulisten, z.B. .xlsx:
If Right(fDatei.Name, 5) = ".xlsx" Then
2. Funktioniert das auch in Excel 2013?
Ja, die gezeigten VBA-Skripte sind mit Excel 2010 und neueren Versionen kompatibel.