VBA Makro zum Auslesen des Inhalts eines Ordners
Schritt-für-Schritt-Anleitung
-
Öffne Excel und erstelle ein neues Arbeitsblatt oder eine neue Arbeitsmappe.
-
Aktiviere die Entwicklertools. Gehe zu Datei
> Optionen
> Menüband anpassen
und aktiviere die Entwicklertools
.
-
Öffne den VBA-Editor. Klicke auf Entwicklertools
> Visual Basic
.
-
Füge ein neues Modul hinzu: Rechtsklicke auf VBAProject (DeineMappe)
und wähle Einfügen
> Modul
.
-
Kopiere und füge den folgenden Code ein:
Public Sub Auto_Open()
Dim STRFOLDER As Variant
Dim objShell As Object, objFolder As Object
Dim bytIndex As Byte, intColumn As Integer, lngRow As Long
Dim varName, arrHeaders(37)
STRFOLDER = ThisWorkbook.Path & "\"
If Dir(STRFOLDER, 16) = "" Then
MsgBox "Der Ordner " & STRFOLDER & " wurde nicht gefunden!", 64, "Hinweis"
Exit Sub
End If
Application.ScreenUpdating = False
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(STRFOLDER)
intColumn = 1
For bytIndex = 0 To 37
arrHeaders(bytIndex) = objFolder.GetDetailsOf(varName, bytIndex)
Cells(1, intColumn + bytIndex) = arrHeaders(bytIndex)
Next
Rows(1).Font.Bold = True
lngRow = 2
For Each varName In objFolder.Items
For bytIndex = 0 To 37
Cells(lngRow, intColumn + bytIndex) = objFolder.GetDetailsOf(varName, bytIndex)
Next
lngRow = lngRow + 1
Next
Columns.AutoFit
Set objShell = Nothing
Set objFolder = Nothing
Application.ScreenUpdating = True
End Sub
-
Schließe den VBA-Editor und kehre zu Excel zurück.
-
Speichere die Arbeitsmappe als .xlsm
, um das Makro zu aktivieren.
-
Führe das Makro aus: Gehe zu Entwicklertools
> Makros
, wähle Auto_Open
und klicke auf Ausführen
.
Häufige Fehler und Lösungen
-
Laufzeitfehler '91': Dieser Fehler tritt auf, wenn die Objektvariable nicht festgelegt ist. Stelle sicher, dass der Ordner, der mit STRFOLDER
angegeben wird, existiert.
-
Konstanter Ausdruck erforderlich: Wenn Du Const STRFOLDER
verwendest, ersetze es durch Dim STRFOLDER As Variant
, um die Zuweisung von ThisWorkbook.Path
zu ermöglichen.
-
Ordner nicht gefunden: Vergewissere Dich, dass der Pfad korrekt ist und der Ordner tatsächlich vorhanden ist. Du kannst den Pfad im Debugger überprüfen.
Alternative Methoden
Wenn Du nicht mit VBA arbeiten möchtest, kannst Du auch Power Query verwenden, um den Inhalt eines Ordners auszulesen. Gehe zu Daten
> Daten abrufen
> Aus Datei
und wähle den Ordner aus, um die Dateien zu importieren. Dies ist besonders nützlich, wenn Du keine Programmierkenntnisse hast.
Praktische Beispiele
Hier ein Beispiel, wie Du den Code anpassen kannst, um zusätzliche Informationen anzuzeigen:
arrHeaders(0) = "Name"
arrHeaders(1) = "Größe"
arrHeaders(2) = "Änderungsdatum"
Mit diesen Anpassungen kannst Du spezifische Details zu den Dateien im Ordner auslesen.
Tipps für Profis
-
Nutze Objektvariablen, um die Performance zu verbessern, indem Du weniger auf den Worksheet
-Zugriff zugreifst.
-
Arbeite mit Fehlerbehandlungsroutinen, um das Makro robust zu gestalten. Verwende On Error Resume Next
oder On Error GoTo Fehlerbehandlung
.
-
Experimentiere mit der shell.application namespace
, um weitere Details zu erhalten, die möglicherweise nicht in der Standardansicht enthalten sind.
FAQ: Häufige Fragen
1. Wie kann ich den Pfad zu einem anderen Ordner ändern?
Du kannst den Pfad in der Zeile STRFOLDER = ThisWorkbook.Path & "\"
anpassen, indem Du den gewünschten Ordnerpfad direkt angibst.
2. Kann ich das Makro auch in Excel Online verwenden?
Leider unterstützt Excel Online keine VBA-Makros. Du musst die Desktop-Version von Excel verwenden.
3. Was ist CreateObject("Shell.Application")
?
Dies ist eine Methode, um auf die Windows-Shell-Funktionen zuzugreifen. Du kannst damit auf Dateiinformationen zugreifen und verschiedene Operationen auf Dateien und Ordnern durchführen.
4. Wie viele Details kann ich mit GetDetailsOf
abrufen?
Standardmäßig kannst Du bis zu 38 Detailinformationen abrufen, die durch den Index 0
bis 37
adressiert werden.