Verzeichnisse in Excel auflisten
Schritt-für-Schritt-Anleitung
Um Verzeichnisse und Unterordner in Excel aufzulisten, kannst Du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es Dir, die Ordnerstruktur zu erfassen und die Ergebnisse in einer Excel-Tabelle anzuzeigen.
- Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Klicke auf
Einfügen
> Modul
, um ein neues Modul zu erstellen.
- Kopiere und füge den folgenden Code in das Modul ein:
Option Explicit
Sub OrdnerAuflisten()
Dim n&, ArAusgabe(), ArOrdner()
Static strOrdner$
strOrdner = Ordnerauswahl(strOrdner)
If strOrdner = "" Then Exit Sub
GetSubFolders ArOrdner, strOrdner, n, False
With Tabelle1 'Ausgabe Tabelle
Events False
On Error GoTo ErrorHandler:
.Range("A2", .Cells(.Rows.Count, 1)).ClearContents 'alte Daten löschen (in A1 = Überschrift)
If n > 0 Then
ReDim Preserve ArAusgabe(1 To UBound(ArOrdner, 2), 1 To 1)
For n = LBound(ArOrdner, 2) To UBound(ArOrdner, 2)
'Format für Hyperlink
ArAusgabe(n, 1) = "=HYPERLINK(""" & ArOrdner(0, n) & """,""" & ArOrdner(1, n) & """)"
Next n
'Ausgabe erste Zelle, hier A2
With .Range("A2").Resize(UBound(ArAusgabe))
.FormulaR1C1 = ArAusgabe
.EntireColumn.AutoFit
End With
End If
ErrorHandler:
Events True
End With
End Sub
Private Sub GetSubFolders(myAr, strPfad As String, LCount As Long, booSubFolder As Boolean, Optional FSO As Object)
Dim FO As Object, FU As Object, F As Object
If FSO Is Nothing Then Set FSO = CreateObject("Scripting.FileSystemObject")
Set FO = FSO.GetFolder(strPfad)
Set FU = FO.SubFolders
On Error GoTo ErrZugriff: 'falls zugriff verweigert
For Each F In FU
If F.Attributes = 16 Then
LCount = LCount + 1
ReDim Preserve myAr(1 To 2, 1 To LCount)
myAr(0, LCount) = F.Path
myAr(1, LCount) = F.Name
If booSubFolder Then GetSubFolders myAr, F.Path, LCount, booSubFolder, FSO
End If
Next F
ErrZugriff:
End Sub
Public Function Ordnerauswahl(Optional ByVal strVorgabe$) As String
Dim strOrdner As String
If strVorgabe = "" Then
strVorgabe = "C:\"
End If
strVorgabe = strVorgabe & IIf(Right$(strVorgabe, 1) = "\", "", "\")
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = strVorgabe
.Title = "Ordnerauswahl"
.ButtonName = "Auswahl..."
.InitialView = msoFileDialogViewList
If .Show = -1 Then
strOrdner = .SelectedItems(1)
If Right(strOrdner, 1) <> "\" Then strOrdner = strOrdner & "\"
Else
strOrdner = ""
End If
End With
Ordnerauswahl = strOrdner
End Function
- Schließe den VBA-Editor und gehe zurück zu Excel.
- Führe das Makro
OrdnerAuflisten
aus, um die Ordner in Excel aufzulisten.
Häufige Fehler und Lösungen
-
Fehler: "Zugriff verweigert"
Dieser Fehler tritt auf, wenn das Skript nicht auf einen bestimmten Ordner zugreifen kann. Stelle sicher, dass Du die erforderlichen Berechtigungen für den Ordner hast.
-
Fehler: "Excel reagiert nicht"
Wenn Excel beim Ausführen des Codes abstürzt, kann dies an einer großen Anzahl von Ordnern liegen. Versuche, den Code auf ein kleineres Verzeichnis anzuwenden.
Alternative Methoden
Es gibt verschiedene Möglichkeiten, um Ordnerinhalte in Excel aufzulisten. Eine Möglichkeit ist die Verwendung von Power Query, um Daten aus einem Ordner zu importieren. Du wählst einfach den Ordner aus, und Power Query erstellt eine Tabelle mit den Dateien und Unterordnern.
- Gehe zu
Daten
> Daten abrufen
> Aus Datei
> Aus Ordner
.
- Wähle den gewünschten Ordner aus und klicke auf
OK
.
- Bearbeite die Abfrage nach Bedarf und lade die Daten in Excel.
Praktische Beispiele
-
Beispiel 1: Auflisten von Ordnern in einem bestimmten Verzeichnis.
Verwende den obenstehenden VBA-Code und wähle den gewünschten Ordner aus.
-
Beispiel 2: Auflisten von Unterordnern in Excel.
Aktiviere die Option booSubFolder
im GetSubFolders
Aufruf auf True
, um auch Unterordner aufzulisten.
Tipps für Profis
- Verwende das
Application.ScreenUpdating = False
am Anfang des Codes, um die Ausführungsgeschwindigkeit zu erhöhen.
- Füge zusätzliche Fehlerbehandlungsroutinen hinzu, um den Code robuster zu gestalten.
- Nutze
Debug.Print
, um Zwischenergebnisse während der Entwicklung zu überprüfen.
FAQ: Häufige Fragen
1. Wie kann ich nur bestimmte Dateitypen in einem Ordner auflisten?
Du kannst den Code anpassen, um nur Dateien mit bestimmten Erweiterungen zu erfassen, indem Du eine Bedingung für die Dateiendung hinzufügst.
2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der Code sollte in Excel-Versionen ab 2010 funktionieren, die VBA unterstützen.
3. Kann ich auch Dateien in Unterordnern auflisten?
Ja, um Dateien in Unterordnern aufzulisten, kannst Du die booSubFolder
-Option auf True
setzen.