PDF-Dateien aus Ordner und Unterordner mit Excel VBA auslesen
Schritt-für-Schritt-Anleitung
Um alle PDF-Dateien aus einem bestimmten Ordner und dessen Unterordnern mit Excel VBA auszulesen, befolge diese Schritte:
-
Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
-
Füge ein neues Modul hinzu:
- Klicke mit der rechten Maustaste auf „VBAProject (dein Arbeitsblatt)“.
- Wähle „Einfügen“ > „Modul“.
-
Kopiere und füge folgenden Code ein:
Private Declare Function OemToCharA Lib "user32.dll" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Public Function ASCIItoANSI(ByVal Text As String) As String
Call OemToCharA(Text, Text)
ASCIItoANSI = Text
End Function
Sub pdf_auflisten()
Dim objShell As Object, objExec As Object
Dim vntRet As Variant, strFolder As String, strTMP As String
strFolder = "C:\...\...\Miete und NK\" ' Pfad anpassen
Set objShell = CreateObject("WScript.Shell")
ChDrive Left(strFolder, 1)
ChDir strFolder
Set objExec = objShell.Exec("cmd /c dir /s /b *.pdf")
strTMP = ASCIItoANSI(objExec.StdOut.ReadAll)
vntRet = Split(strTMP, vbCrLf)
If UBound(vntRet) > 0 Then
Tabelle1.Range("A1").Resize(UBound(vntRet) + 1, 1) = Application.Transpose(vntRet)
End If
Set objShell = Nothing
End Sub
-
Passe den Pfad in der Zeile strFolder an, um auf deinen gewünschten Ordner zu verweisen.
-
Führe das Makro aus: Drücke F5 oder gehe zu „Ausführen“ > „Sub/UserForm ausführen“.
Häufige Fehler und Lösungen
-
Fehler: „Pfad nicht gefunden“
- Stelle sicher, dass der Pfad in
strFolder korrekt ist. Überprüfe auf Tippfehler oder fehlende Ordnernamen.
-
Problem: Keine PDFs werden aufgelistet
- Überprüfe, ob sich tatsächlich PDF-Dateien im angegebenen Ordner und den Unterordnern befinden.
-
Fehler beim Ausführen des Makros
- Achte darauf, dass die Sicherheitsstufe in Excel für Makros so eingestellt ist, dass sie ausgeführt werden können. Gehe zu „Datei“ > „Optionen“ > „Trustcenter“ > „Einstellungen für das Trustcenter“ und aktiviere die Makros.
Alternative Methoden
Eine alternative Methode, um alle Dateien in einem Ordner und Unterordner anzuzeigen, ist die Verwendung von Power Query oder das Windows-Befehlszeilen-Tool. Diese Tools können ebenfalls helfen, wenn du keine VBA-Lösungen nutzen möchtest.
Praktische Beispiele
Hier ein Beispiel, wie du nur die Dateinamen ohne den gesamten Pfad anzeigen kannst. Füge folgenden Code in die vorherige Sub pdf_auflisten()-Routine ein:
Dim zeile As Integer
zeile = 1
For Each datei In vntRet
Tabelle1.Cells(zeile, 2) = Mid(datei, InStrRev(datei, "\") + 1) ' Nur Dateinamen
zeile = zeile + 1
Next
Dieser Code listet die Dateinamen in Spalte B auf.
Tipps für Profis
- Automatisierung: Du kannst das Makro so anpassen, dass es beim Öffnen der Datei automatisch ausgeführt wird.
- Benutzerfreundlichkeit: Erstelle ein Eingabefeld in der Excel-Oberfläche, um den Ordnerpfad dynamisch anzugeben, ohne den VBA-Code jedes Mal zu ändern.
- Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um das Skript robuster zu machen, insbesondere wenn der angegebene Ordner nicht existiert.
FAQ: Häufige Fragen
1. Wie kann ich das Skript so anpassen, dass es auch andere Dateiformate durchsucht?
Du kannst die Zeile objExec = objShell.Exec("cmd /c dir /s /b *.pdf") ändern, um andere Dateiformate einzuschließen, z.B. *.docx für Word-Dokumente.
2. Funktioniert das Skript in Excel 2010 und späteren Versionen?
Ja, dieser VBA-Code sollte in Excel 2010 und späteren Versionen problemlos funktionieren. Stelle sicher, dass du die Makro-Sicherheitsstufe entsprechend anpasst.