Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Alle PDF´s aus Ordner und Unterordner auslesen!

Forumthread: Alle PDF´s aus Ordner und Unterordner auslesen!

Alle PDF´s aus Ordner und Unterordner auslesen!
Thomas
Einen schönen guten Morgen,
unter Ordner auslesen hab ich nicht das gefunden was ich suche, daher wende ich mich Hilfe suchend an euch.
Ich will aus "C:\...\...\Miete und NK\" alle PDF Dateien auslesen. In Miete und NK befinden sich Unterordner\Unteroerdner und aus denen sollen alle in eine Tabelle aufgelistet werden.
Ich hoffe es kann mir jemand Helfen ob mit einem Code oder einem Link der mich weiter bringt.
Gruß Thomas aus Stuttgart
Anzeige
AW: Alle PDF´s aus Ordner und Unterordner auslesen!
19.02.2012 11:13:29
ransi
Hallo Thomas

oder einem Link der mich weiter bringt
Gib im Archiv (http://xlarchiv.herber.de/)mal "filesearch excel 2007"ein.
Da kommt dann so einiges.
Wenn du damit nicht klarkommst, ruhig nochmal melden.
ransi
AW: Alle PDF´s aus Ordner und Unterordner auslesen!
19.02.2012 11:42:06
Thomas
Hallo Ransi,
die Datei von Hajo nutz ich schon hin und wieder zum suchen und ich hab nun auch mal nach PDF gesucht das geht ja dachte es geht nur bei Exceldateien nun weiss ich das ich auch Pdf damit suchen kann.
Was mich aber bei der ganzen Sache stört ist das ich das Verzeichnis,User.... den ganzen Pfad bis zu Miete und NK auswählen muss.
Ich will immer nur diesen Ordner und darin alle Pdf´s haben ohne das ich anklicken muss wo ich suche.
Von mir aus leg ich den Pfad in A1 an bis Miete und NK und der Code listet mir dann aus den Unterordner alle PDF´s auf. Es sind nur PDF´s darin gespeichert nichts anderes.
Gruß Thomas aus Stuttgart
Anzeige
AW: Alle PDF´s aus Ordner und Unterordner auslesen!
19.02.2012 12:25:31
ransi
HAllo Thomas
ICH kenne Hajos Suchalgorithmus nicht.
Ich nutze den Code von Nepumuk
Schau dir mal die Beispieldatei an.
Da kannst du den Startpfad vorgeben.
https://www.herber.de/bbs/user/78993.xls
ransi
Alle PDF´s aus Ordner und Unterordner auslesen!
19.02.2012 12:27:26
Anton
Hallo Stuttgart ,
probier sowas:
Code:

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\" '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)  'Idee von Bernd (bst)
  vntRet = Split(strTMP, vbCrLf)
  If UBound(vntRet) > 0 Then Tabelle1.Range("A1").Resize(UBound(vntRet) + 1, 1) = Application.Transpose(vntRet)  
  Set objShell = Nothing  
End Sub  


mfg Anton
Anzeige
AW: Alle PDF´s aus Ordner und Unterordner auslesen!
19.02.2012 12:40:33
Thomas
Hallo Ransi und Anton,
Ransi bei deinem Beispiel muss ich wie bei Hajo auch bis zum Ordner "Miete und NK" alles durchklicken das will ich nicht.
Anton, dein Code hab ich in die Tabelle eingetragen und den Pfad C:\User\...\... ergänzt aber da kommt die Meldung Pfad nicht gefunden.
Gruß Thomas aus Stuttgart
Anzeige
Sorry, Anton Schreibfehler meinerseits!
19.02.2012 12:54:00
Thomas
Anton,
es geht nun.
Großen Dank an euch und wünsch noch einen schönen Sonntag.
Gruß Thomas aus Stuttgart
Wie kann man nur den Dateinamen anzeigen? OT!
19.02.2012 12:59:12
Thomas
nur den Dateinamen anzeigen
19.02.2012 13:11:17
Anton
Hallo Thomas,
so:
Code:

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\" '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)   'Idee von Bernd (bst)
  vntRet = Split(strTMP, vbCrLf)
  If UBound(vntRet) > 0 Then  
    zeile = 1
    Tabelle1.Range("A1").Resize(UBound(vntRet) + 1, 1) = Application.Transpose(vntRet)
    For Each datei In vntRet  
      Tabelle1.Cells(zeile, 2) = Mid(datei, InStrRev(datei, "\") + 1)
      zeile = zeile + 1
    Next
  End If  
  Set objShell = Nothing  
End Sub  


mfg Anton
Anzeige
Pfad anpassen ...
19.02.2012 12:59:51
Anton
Hallo Thomas,
du musst den Pfad direkt angeben, etwa so:"E:\Temp\Simon\ascii\ascii\ascii\bin".
mfg Anton
AW: Pfad anpassen ...
19.02.2012 13:39:55
Thomas
Hallo Anton,
es lag nur an dem "s" bei Users wo ich vergessen hatte.
Dein Code scheibt nun den Dateinamen in Spalte B soweit so gut. Ich hab das getauscht aber lässt sich das noch entfernen aus den Zellen C:\....\.....\Miete und NK so das nur noch die Unterordner angezeigt werden?
Also Unterordner\Unterordner\Dateiname der PDF.
Gruß Thomas aus Stuttgart
Anzeige
AW: Pfad anpassen ...
19.02.2012 13:49:43
Anton
Hallo Thomas,

strTMP = ASCIItoANSI(objExec.StdOut.ReadAll)  'Idee von Bernd (bst)
strTMP = Replace(strTMP, strFolder, "")
vntRet = Split(strTMP, vbCrLf)
...
mfg Anton
AW: Pfad anpassen ...
19.02.2012 13:44:43
Thomas
Hallo Anton,
es lag nur an dem "s" bei Users wo ich vergessen hatte.
Dein Code scheibt nun den Dateinamen in Spalte B soweit so gut. Ich hab das getauscht aber lässt sich das noch entfernen aus den Zellen C:\....\.....\Miete und NK so das nur noch die Unterordner angezeigt werden?
also Unterordner\Unterordner\Dateinamen der PDF.
Gruß Thomas aus Stuttgart
Anzeige
AW: Pfad anpassen ...
19.02.2012 14:17:36
Thomas
Hallo Anton,
klasse das funzt und ich hab das nun auch auf A3 angepasst so das ich Überschriften einbauen kann.
Den Dateinamen zerleg ich per Formel als kleine Hausaufgabe oder Übung.
Nochmal schönen Sonntag und auch ein dankeschön.
Gruß Thomas aus Stuttgart
Anzeige
Anzeige

Infobox / Tutorial

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:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf „VBAProject (dein Arbeitsblatt)“.
    • Wähle „Einfügen“ > „Modul“.
  3. 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
  4. Passe den Pfad in der Zeile strFolder an, um auf deinen gewünschten Ordner zu verweisen.

  5. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige