Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Inhalte von einer PDF suchen und den Text kopieren

Inhalte von einer PDF suchen und den Text kopieren
25.09.2019 08:54:52
einer
Hallo zusammen,
ich möchte aus 100 PDFs etwas suchen und das Ergebnis in einer Excel Tabelle einfügen.
Momentan habe ich es so gelöst, allerdings nicht ganz optimal:
Sub PDFtoExcel()
Dim i As Integer, z As Long
Dim strCMDLine As String, strTXT As String
Dim FSO As Object, objSFold As Object, objWks As Object, WshShell As Object, tmp As Object
Dim colPFiles As New Collection, colTFiles As New Collection
Set WshShell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objSFold = FSO.GetFolder(ThisWorkbook.Path)
Set objWks = ThisWorkbook.Sheets(1)                             ' Ausgabe
strCMDLine = ThisWorkbook.Path & "\Tools\pdftotext.exe -raw -layout -nopgbrk "
Const strPrefix As String * 31 = "Name"
Const intSWLen = 20
For Each tmp In objSFold.Files                                  ' alle Dateien einlesen
If Right(tmp.Path, 4) = ".pdf" Then colPFiles.Add tmp.Path  ' nur *.pdf
Next tmp
For i = 1 To colPFiles.Count
WshShell.Run (strCMDLine & Chr(34) & colPFiles.Item(i) & Chr(34)), 0, True
'        Kill colPFiles.Item(i)                                      ' pdf-Files löschen
Next
For Each tmp In objSFold.Files                                  ' wieder alles einlesen
If Right(tmp.Path, 4) = ".txt" Then colTFiles.Add tmp.Path  ' nur *.txt
Next tmp
z = objWks.Cells(Rows.Count, 1).End(xlUp).Row + 1               ' letzte belegte Zeile ( _
Spalte A)
For i = 1 To colTFiles.Count
strTXT = FSO.OpenTextFile(colTFiles.Item(i)).ReadAll
objWks.Cells(z, 3) = colPFiles.Item(i)                      ' Dateiname in Spalte B
objWks.Cells(z, 4) = 1
While InStr(1, strTXT, strPrefix, vbTextCompare) > 0
strTXT = Mid(strTXT, InStr(1, strTXT, strPrefix) + Len(strPrefix) - 1)
objWks.Cells(z, 2) = Left(strTXT, intSWLen)             ' Wert eintragen
z = z + 1
Wend
Kill colTFiles.Item(i)                                      ' txt-Files löschen
Next
End Sub

Gibt es eine Möglichkeit, dass ich die Zellen in der PDF als Objekt verwenden kann und nicht als txt Datei umwandeln muss und mit Zeichen arbeiten?
Freue mich auf Hilfe von euch, hoffe es hat schon jemand so etwas gelöst!
Viele Grüße
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MS Word
25.09.2019 09:30:02
Fennek
Hallo,
PDF's können so verschieden sein, dass ohne Beispiel nur allgemeine Aussagen möglich sind:
M$ Word (ab 2013) kann viele PDF in eine mit VBA auswertbare Form umwandeln, dies sollte zuerst getestet werden.
mfg
AW: MS Word
25.09.2019 10:22:12
Steffen
Hallo Fennek,
danke für deine Rückmeldung.
Hier eine bsp. Datei die ich bereits von einer PDF in eine txt Datei konvertiert habe.
https://www.herber.de/bbs/user/132186.txt
Für mich ist nur die Herausforderung, dass die Zeichenabstände auf jeder PDF etwas anders sein können und ich hier eine Automatisation haben muss.
Am besten wäre, wenn ich pro Antwort von den Freunden ein Object hätte und das dann in ein Zelle in der Excel Tabelle schreiben kann.
Können Sie mir da weiterhelfen?
Wie meinten Sie das mit dem M$Word? Haben Sie da ein Beispiel?
mfg
Anzeige
AW: Beispiel PDF
25.09.2019 12:52:49
Fennek
Hallo,
auch aus solchen txt-Dateien sollte man per VBA das Gesuchte auslesen können, aber direkt aus der PDF ist eigentlich sinnvoller.
Hoffentlich hast Du VBA-Grundkenntnisse.
mfg
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

PDF-Inhalte suchen und in Excel kopieren


Schritt-für-Schritt-Anleitung

  1. VBA-Umgebung öffnen: Öffne Excel und drücke ALT + F11, um die VBA-Entwicklungsumgebung zu öffnen.

  2. Neues Modul erstellen: Klicke im Projektfenster mit der rechten Maustaste auf dein Projekt und wähle Einfügen > Modul.

  3. Code einfügen: Kopiere den folgenden VBA-Code in das neue Modul:

    Sub PDFtoExcel()
       Dim i As Integer, z As Long
       Dim strCMDLine As String, strTXT As String
       Dim FSO As Object, objSFold As Object, objWks As Object, WshShell As Object, tmp As Object
       Dim colPFiles As New Collection, colTFiles As New Collection
       Set WshShell = CreateObject("WScript.Shell")
       Set FSO = CreateObject("Scripting.FileSystemObject")
       Set objSFold = FSO.GetFolder(ThisWorkbook.Path)
       Set objWks = ThisWorkbook.Sheets(1)                             ' Ausgabe
       strCMDLine = ThisWorkbook.Path & "\Tools\pdftotext.exe -raw -layout -nopgbrk "
       Const strPrefix As String * 31 = "Name"
       Const intSWLen = 20
    
       For Each tmp In objSFold.Files                                  ' alle Dateien einlesen
           If Right(tmp.Path, 4) = ".pdf" Then colPFiles.Add tmp.Path  ' nur *.pdf
       Next tmp
    
       For i = 1 To colPFiles.Count
           WshShell.Run (strCMDLine & Chr(34) & colPFiles.Item(i) & Chr(34)), 0, True
       Next
    
       For Each tmp In objSFold.Files                                  ' wieder alles einlesen
           If Right(tmp.Path, 4) = ".txt" Then colTFiles.Add tmp.Path  ' nur *.txt
       Next tmp
    
       z = objWks.Cells(Rows.Count, 1).End(xlUp).Row + 1               ' letzte belegte Zeile (Spalte A)
       For i = 1 To colTFiles.Count
           strTXT = FSO.OpenTextFile(colTFiles.Item(i)).ReadAll
           objWks.Cells(z, 3) = colPFiles.Item(i)                      ' Dateiname in Spalte B
           objWks.Cells(z, 4) = 1
           While InStr(1, strTXT, strPrefix, vbTextCompare) > 0
               strTXT = Mid(strTXT, InStr(1, strTXT, strPrefix) + Len(strPrefix) - 1)
               objWks.Cells(z, 2) = Left(strTXT, intSWLen)             ' Wert eintragen
               z = z + 1
           Wend
           Kill colTFiles.Item(i)                                      ' txt-Files löschen
       Next
    End Sub
  4. PDFs speichern: Stelle sicher, dass alle PDF-Dateien im gleichen Verzeichnis wie die Excel-Datei gespeichert sind.

  5. Code ausführen: Schließe den VBA-Editor und führe das Makro aus, um die Inhalte aus den PDFs zu extrahieren und in Excel zu kopieren.


Häufige Fehler und Lösungen

  • Error 53 - Datei nicht gefunden: Stelle sicher, dass der Pfad zu pdftotext.exe korrekt ist und die Datei tatsächlich vorhanden ist.
  • Leere Zellen in Excel: Überprüfe, ob die PDF-Dateien tatsächlich den gesuchten Text enthalten. Manchmal sind PDFs bildbasiert und der Text kann nicht extrahiert werden.
  • Unerwartete Zeichen: Wenn die Zeichenabstände in den PDFs variieren, könnte es hilfreich sein, die -layout-Option in pdftotext zu entfernen oder zu ändern.

Alternative Methoden

  • Adobe Acrobat Reader: Du kannst den Adobe Acrobat Reader verwenden, um Text aus einer PDF zu kopieren. Öffne die PDF und verwende die Suchfunktion (Strg + F), um nach einem bestimmten Wort zu suchen und den Text direkt zu kopieren.
  • Online-Tools: Es gibt mehrere Online-Tools, die PDFs in Text umwandeln. Diese Tools sind nützlich, wenn du keine Software installieren möchtest.
  • PDF in Word konvertieren: Mit Microsoft Word (ab 2013) kannst du PDFs direkt öffnen und als bearbeitbare Word-Dokumente speichern. Von dort aus kannst du den Text kopieren und in Excel einfügen.

Praktische Beispiele

  • Formeln aus PDF in Word kopieren: Wenn du Formeln aus einer PDF-Datei benötigst, kannst du die PDF in Word konvertieren und dann die Formeln kopieren.
  • PDF-Tabelle in Excel kopieren: Eine Tabelle in einer PDF kann in Excel kopiert werden, indem du den Text auswählst und einfügst. Achte darauf, die Formatierung anzupassen.

Tipps für Profis

  • Automatisierung mit VBA: Wenn du häufig PDF-Daten extrahierst, kann es sinnvoll sein, dein VBA-Skript regelmäßig zu verbessern und anzupassen.
  • Mehrere Dateien gleichzeitig verarbeiten: Erweiter deine VBA-Lösung, um mehrere PDF-Dateien in einem Durchgang zu verarbeiten, um die Effizienz zu steigern.
  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung in deinem VBA-Skript, um Probleme beim Durchsuchen von PDFs besser nachverfolgen zu können.

FAQ: Häufige Fragen

1. Wie kann ich den Text aus einer PDF kopieren?
Du kannst den Text direkt aus Adobe Acrobat Reader kopieren oder ein VBA-Skript verwenden, um den Text in Excel zu extrahieren.

2. Gibt es eine Möglichkeit, PDFs nach einem bestimmten Wort zu durchsuchen?
Ja, du kannst die Suchfunktion in Adobe Acrobat verwenden oder ein VBA-Skript anpassen, das nach spezifischen Wörtern in den PDF-Dateien sucht.

3. Unterstützt Microsoft Word das Kopieren von Inhalten aus PDFs?
Ja, Microsoft Word kann PDFs öffnen und den Text in ein bearbeitbares Format umwandeln, was das Kopieren erleichtert.

4. Welche Software benötige ich, um PDFs in Textdateien umzuwandeln?
Du benötigst ein Programm wie pdftotext, Adobe Acrobat oder verschiedene Online-Tools, um PDFs in Textdateien umzuwandeln.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige