Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Pdf auslesen - in Excel übertragen??
#1
Hallo Zusammen,

gibt es irgendeine Möglichkeit bestimmte Zeilen von einer PDF-Datei (ohne das man diese in eine exe. Datei umwandeln muss) 
auszulesen und diese in Excel übertragen werden??

ich habe schon von einigen VBAs gelesen, damit kenne ich mich leider nicht ganz so aus und denke
das hier die Datei umgewandelt werden muss.... 

Für Eure Hilfe bin ich sehr Dankbar  Blush

LG Sandra
Antworten Top
#2
Hallöchen,

eine pdf in eine exe umwandeln? Wie geht das?
Ansonsten, schaue, ob Du die Datei in Word bekommst und wenn ja, kopiere die Daten von dort.

PS:
Bei der Versionsangabe in Deinem Profil interessiert uns im Excel-Forum eher die Excel-Version Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Hi Sandra,

mit VBA? 
Ja gibt es.

Um eine qualifiziertere Antwort geben zu können würde ein Beispiel-PDF sich hier anbieten.
Außerdem, welchen Text Du daraus begehrst.
gruß
Marco
Antworten Top
#4
Hallo,

es geht um Rechnungen aus denen ich die "Ref.: 2274176,2274176,2274176"  mit der dazugehörigen "Lademittelart 1 EW-Palette 1 Colli" und
"Abrechnungsposten Fracht Paletten inkl. Maut EUR 39,90" in Excel auswerten will.
Anbei ein PDF Beispiel, die Aufstellung ist immer die selbe, meistens 2-3 Positionen pro Seite.
Und damit ich nicht alles manuell mit Copy&Paste ins Excel übertragen muss dachte ich mir ob es vl. eine einfachere Lösung gibt....

Vielen Dank :)


Angehängte Dateien
.pdf   Beisp-.pdf (Größe: 14,51 KB / Downloads: 11)
Antworten Top
#5
Hallo,

mit "PDFtoTEXT.exe" kann die Datei in eine Text-Datei gewandelt werden. Dies sollte auch für viele Dateien mit einem Aufruf möglich sein.

Die beigefügte Datei kann dann entweder direkt aus dem Menu, oder besser mit VBA "OPEN file FOR READING" gelesen werden.

mfg


Angehängte Dateien
.txt   Beisp-.txt (Größe: 596 Bytes / Downloads: 4)
Antworten Top
#6
@Fennek:
Genau da wollen wir hin ;)

Code:
Option Explicit
Const sPFADEXEFILE As String = "C:\Test\xpdf-tools-win-4.02\bin32\pdftotext.exe" '<--- anpassen; Pfad zur Pdftotext.exe

Sub main()
   
    Dim f As Scripting.File
    Dim fso As New Scripting.FileSystemObject
    Dim sFile As String
   
    With fso.GetFolder("C:\Test\PDF\") '<--- anpassen; Pfad mit den PDFs
   
        For Each f In .Files
            If InStr(1, f.Path, ".pdf", vbTextCompare) > 0 Then
                fGetPDFText sPFADEXEFILE, f.Path, Replace(f.Path, ".pdf", ".txt")
            End If
        Next f
   
    End With
   
   
   
End Sub


Public Function fGetPDFText(ByVal sExecuteFile As String, _
                        ByVal sSourcePDF As String, _
                        ByVal sTargetTXT As String) As Boolean
'// ------------------------------------------------------------------------------------
'// Methode:  | Erzeugen einer Textdatei aus einem PDF-Dokument
'// ------------------------------------------------------------------------------------
'// Parameter: | sExecuteFile - vollständiger Pfad der pdftotext.exe
'//            | sSourcePDF  - vollständiger Pfad des Quelldokumentes (PDF)
'//            | sTargetTXT  - vollständiger Pfad des Zieldokumentes (TXT)
'// ------------------------------------------------------------------------------------
'// Rückgabe:  | True bei Erfolg
'// ------------------------------------------------------------------------------------
'// Autor:    | ebs17
'// ------------------------------------------------------------------------------------
'// Hinweis:  | pdftotext.exe beziehbar über http://www.foolabs.com/xpdf/download.html
'//            | aktueller Download zum 18.01.2011:
'//            | ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl5-win32.zip
'// ------------------------------------------------------------------------------------

  Dim sCommand As String
  Dim vResult As Variant
  sCommand = sExecuteFile & " -raw " & sSourcePDF & " " & sTargetTXT
  vResult = Shell(sCommand, vbHide)
  fGetPDFText = Not IsNull(vResult)
End Function

Sub main2()
   
    Dim s As String
    Dim v
    Dim f As Scripting.File
    Dim fso As New Scripting.FileSystemObject
    Dim FF As Integer: FF = FreeFile
   
    With fso.GetFolder("C:\Test\TXT\") '<--- anpassen; Pfad zu den TXT
   
        For Each f In .Files
       
            Open f.Path For Binary As FF
                s = Space$(LOF(FF))
                Get #FF, , s
            Close FF
       
            v = Split(s, vbCrLf)
            '*** Daten eintragen
            With Worksheets(1).Cells(Rows.Count, 1).End(xlUp)
                .Offset(1).Value = f.Path
                .Offset(1, 1).Value = v(1)  '<--- Zeilen der TXT
                .Offset(1, 2).Value = v(2)  '<--- Zeilen der TXT
            End With
        Next f
   
    End With

End Sub

Vorgehensweise:
- PDFtoText runterladen extrahieren
- den Pfad im Code anpassen
- alle PDFs unter C:\Test\PDF\ ablegen
- Prozedur main() ausführen
- in C:\Test\PDF\ nun alle txt-Files ausschneiden
- in c:\Test\TXT\ einfügen

ab hier entweder mit main2() weitermachen (dazu müsste man aber weitere PDFs analysieren; Stichwort: 2-3 Positionen auf einem PDF -> gibt Dein Beispiel nicht her)

Oder aber, was für Dich wesentlich praktikabler wäre, ist der Einsatz von PowerQuery.
Da klickst Du das begehrte dann zusammen.

Eine gute Seite zum einlesen wäre m.E. diese hier:
PQ-Import en détail | Excel ist sexy! (excel-ist-sexy.de)

Oder Günther meldet sich selbst zu Wort, dann lerne Ich in Sachen PQ auch mal wieder was dazu ;)


Edit:
Sehe eben, dass ich stur aus einem Projekt kopierte.
Bevor Du den Code zum laufen bekommst, musst im Visual Basic Editor noch einen Verweis setzen.

Starte Excel -> Alt+F11 -> Extras -> Verweise -> M$ Scripting Runtime suchen -> anhaken -> mit OK bestätigen.

Ist zwar umständlicher als LateBinding, aber komfortabler für Dich/Euch, falls Ihr Änderungen vornehmen wollt/müsst.
gruß
Marco
Antworten Top
#7
Vielen Dank für die Hilfe einst weil - werde ich gleich testen und melde mich 
dann dazu :)

LG
Antworten Top
#8
Habe es jetzt mal lt. deiner Anleitung als Beispiel ausprobiert - hat wunderbar funktioniert. :)
Vielen Dank dafür. 

Habe jetzt ein Beisp. angehängt mit mehreren Positionen bzw. Seiten -> Stichwort: 2-3 Positionen auf einem PDF.
In dieser Situation kann ich diesen VBA-Code wenig verwenden da die Zeilen ja immer unterschiedlich sind. 
Gibt es vl. auch eine Möglichkeit das z.B. nur der Text gesucht wird und mir dann die Zeile (oder auch nur der Text) ausgelesen wird?

Danke im Voraus 
LG


Angehängte Dateien
.pdf   Beisp._2.pdf (Größe: 52,76 KB / Downloads: 4)
.txt   Beisp._2.txt (Größe: 4,75 KB / Downloads: 6)
Antworten Top
#9
Hallo,

es scheint eine recht einfache Möglichkeit zu geben. Mit der zweiten Beispiel-txt-Datei geht:

Code:
im CMD:

find "Ref" Beisp._2.txt

---------- BEISP._2.TXT
Abgangsland: AT Ref.: 2274176,2274176,2274176
Empfangsland: AT Ref.: Mail 20.12.2019
Abgangsland: AT Ref.: 2276570,2276570,2276570
Empfangsland: Ref.: AD Sattler
Abgangsland: AT Ref.: 2273441,2273441,2273441
Empfangsland: Ref.: Y3I9G
Abgangsland: AT Ref.: 2277481,2277481,2277481
Empfangsland: Ref.: 384089
Abgangsland: AT Ref.: 2275112,2275112,2275112
Empfangsland: Ref.: lt. Mail
Abgangsland: AT Ref.: 2274879,2274879,2274879
Empfangsland: Ref.: Y3QR5

Mein PC mit Excel wurde heute noch nicht hochgefahren, deshalb ein "low tech" Versuch.

mfg
Antworten Top
#10
Da Dir nun alle PDFs (mit Einer sowie n-Positionen) als TXT vorliegen, könntest Du doch versuchen, den TXT-Ordner in PQ einzulesen und entsprechend zu filtern.
Schon etwas eingelesen in dieser Richtung?

Natürlich ginge auch eine VBA Lösung. Einen Ansatz hast Du bereits in der Prozedur main2().
Die müsste man entsprechend anpassen; das Array geschickt befüllen... aber diesen Weg werde Ich nicht mitgehen.

Bis hierhin ok - der Rest darf etwas Eigenleistung verlangen ;)
gruß
Marco
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste