CSV export von PDF Feldern nach Excel
Hallo Zusammen,
Ich habe eine Frage. Und zwar, müssen aus einem Anmeldeformular mit Feldern die Daten ausgelesen werden und über csv nach Excel importiert werden können.
Die PDF Struktur ist hier. Klick
Ist dies möglich?
Ich habe via Google hier -> Klick bei Ihnen im Forum eine auf Excel 2003 abgestimmte Version gefunden, allerdings funktioniert diese auch nach Anpassung der Abfrage Zeile 15 in Excel 365 nicht mehr.
hat jemand von Ihnen eine Idee, wie ich dies In VBA umsetzen kann?
Vielen Dank und freundliche Grüße,
der NachwuchsITler
Ich habe eine Frage. Und zwar, müssen aus einem Anmeldeformular mit Feldern die Daten ausgelesen werden und über csv nach Excel importiert werden können.
Die PDF Struktur ist hier. Klick
Ist dies möglich?
Ich habe via Google hier -> Klick bei Ihnen im Forum eine auf Excel 2003 abgestimmte Version gefunden, allerdings funktioniert diese auch nach Anpassung der Abfrage Zeile 15 in Excel 365 nicht mehr.
hat jemand von Ihnen eine Idee, wie ich dies In VBA umsetzen kann?
Vielen Dank und freundliche Grüße,
der NachwuchsITler
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 351677
Url: https://administrator.de/forum/csv-export-von-pdf-feldern-nach-excel-351677.html
Ausgedruckt am: 27.04.2025 um 02:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo NachwuchsITler,
mit Office 365 kann ich das aktuell leider nicht testen.
Ansonsten gäbe es aber noch eine alternative Lösungsmöglichkeit:
- Konvertieren des PDF via PDF-Creator bspw. (Profil hier so einstellen, dass deine Ausgabe eine TXT wird)
Via VBA:
- Import des TXT-Dokuments in ein eigenes Tabellenblatt in Excel
- Durchführung der Bereinigung der eingelesenen Daten: Kopieren der Textpassagen in das/die entsprechenden Tabellenblätter, wie du Sie benötigst.
Codebeispiel Import:
In dem Code zur Bereinigung, kannst du dann alle unnötigen Zeilen bspw. entfernen und je übrig gebliebener Zeile die betreffende/gewünschte Passage mit der Teil-Funktion z.B. auslesen und auf das gewünschtes Tabellenblatt kopieren.
Alles in allem eigentlich eine überschaubare Menge an Code und einfach umzusetzen.
LG
Volchy
mit Office 365 kann ich das aktuell leider nicht testen.
Ansonsten gäbe es aber noch eine alternative Lösungsmöglichkeit:
- Konvertieren des PDF via PDF-Creator bspw. (Profil hier so einstellen, dass deine Ausgabe eine TXT wird)
Via VBA:
- Import des TXT-Dokuments in ein eigenes Tabellenblatt in Excel
- Durchführung der Bereinigung der eingelesenen Daten: Kopieren der Textpassagen in das/die entsprechenden Tabellenblätter, wie du Sie benötigst.
Codebeispiel Import:
Sub TXTDateienEinlesen()
Dim pfad As String
pfad = ActiveWorkbook.Path & "\<UNTERVERZEICHNIS-QUELLDOKUMENT(E)>\"
x = 2
d = Dir(pfad & "<DATEINAME>*.txt")
Do While d <> ""
Open pfad & d For Input As #1
Do While Not EOF(1)
Line Input #1, temp
Worksheets("<TABELLENBLATT FUER IMPORT>").Cells(x, 1) = Replace(temp, vbTab, ";")
x = x + 1
Loop
Close #1
d = Dir
Loop
End Sub
In dem Code zur Bereinigung, kannst du dann alle unnötigen Zeilen bspw. entfernen und je übrig gebliebener Zeile die betreffende/gewünschte Passage mit der Teil-Funktion z.B. auslesen und auf das gewünschtes Tabellenblatt kopieren.
Alles in allem eigentlich eine überschaubare Menge an Code und einfach umzusetzen.
LG
Volchy

Hier steht wie's geht
PDF auslesen und per VBA in Excel schreiben
PDF auslesen und per VBA in Excel schreiben

p.s. die speziellen Formularfelder wie Haken und Auswahl-Felder wirst du per pdftotext nicht auslesen können! Diese werden im extrahierten Text nicht sichtbar und somit nicht auswertbar sein. Dafür gibt es spezielle Programme, bzw. du startest eine Auswertung stattdessen per Acrobat-Assistent oder liest per Acrobat die Felder aus oder wertest gleich die Datenbank aus an die die Daten sowieso übermittelt werden! Das Auslesen aus RAW-PDF-Dateien ist gelinde gesagt Bullshit.
Servus,
so wie @kokosnuss sagt sind die Formularfelder bzw. nur die Radios/Checkboxes via pdftotext nicht auslesbar. Wenn du aber den großen Bruder vom Adobe Reader dein eigen nennst (Adobe Acrobat) kann man die Daten über COM-Automation in Excel so einlesen:
Pfad in dem die PDF-Dateien liegen lässt sich in Zeile 3 anpassen (per Default ein Unterordner "PDF" im Ordner in dem das *.xlsm File liegt.
Für deine PDFs die nach deinem verlinkten PDF formatiert sind folgender VBA-Code für Excel.
Grüße Uwe
so wie @kokosnuss sagt sind die Formularfelder bzw. nur die Radios/Checkboxes via pdftotext nicht auslesbar. Wenn du aber den großen Bruder vom Adobe Reader dein eigen nennst (Adobe Acrobat) kann man die Daten über COM-Automation in Excel so einlesen:
Pfad in dem die PDF-Dateien liegen lässt sich in Zeile 3 anpassen (per Default ein Unterordner "PDF" im Ordner in dem das *.xlsm File liegt.
Für deine PDFs die nach deinem verlinkten PDF formatiert sind folgender VBA-Code für Excel.
Sub ImportFormData()
'Ordner in dem die PDFs liegen
folderPDF = ThisDocument.Path & "\pdf"
'Acrobat Object erzeugen
Set objAcro = CreateObject("AcroExch.App")
' Filesystemobject erzeugen
Set fso = CreateObject("Scripting.Filesystemobject")
'Ausgaben geschehen auf Arbeitsblatt 1
With Sheets(1)
'estimmte Spalten als Text festlegen
.Range("E:E,I:I,J:J,L:L").NumberFormat = "@"
' Alle PDF Dateien des Ordner importieren
For Each file In fso.GetFolder(folderPDF).Files
If LCase(Right(file.Name, 3)) = "pdf" Then
'Acrobat Objekte erzeugen
Set docAV = CreateObject("AcroExch.AVDoc")
Set docPD = CreateObject("AcroExch.PDDoc")
'PDF öffnen
ret = docAV.Open(file.Path, "")
Set docPD = docAV.GetPDDoc()
Set jsDoc = docPD.GetJSObject
'Formularfelder auslesen und Variablen zuordnen
strVorname = jsDoc.getField("Vorname").Value
strNachname = jsDoc.getField("Nachname").Value
If LCase(jsDoc.getField("Prof").Value) = "ja" Then
strTitle = "Prof"
ElseIf LCase(jsDoc.getField("Dr").Value) = "ja" Then
strTitle = "Dr"
Else
strTitle = ""
End If
If LCase(jsDoc.getField("Pers").Value) = "ja" Then
strAusweis = "Personalausweis"
ElseIf LCase(jsDoc.getField("Rei").Value) = "ja" Then
strAusweis = "Reisepass"
Else
strAusweis = ""
End If
strAusweisnummer = jsDoc.getField("Nr. Ausweis").Value
strAusweisDate = jsDoc.getField("Datum").Value
strNationalitaet = jsDoc.getField("Nationalität").Value
strGeburtsdatum = jsDoc.getField("Geb. Datum").Value
strTelefon = jsDoc.getField("Telefon").Value
strMobil = jsDoc.getField("Mobil").Value
strEmail = jsDoc.getField("E-Mail").Value
strFax = jsDoc.getField("Fax").Value
strIHK = jsDoc.getField("IHK").Value
strHotel = jsDoc.getField("Hotel").Value
strStadtrundfahrt = IIf(LCase(jsDoc.getField("1").Value) = "ja", "JA", "NEIN")
strAbendveranstaltung = IIf(LCase(jsDoc.getField("3").Value) = "ja", "JA", "NEIN")
strVeranstaltung = IIf(LCase(jsDoc.getField("5").Value) = "ja", "JA", "NEIN")
strDatumUnterschrift = jsDoc.getField("Datum 2").Value
' Daten der Formularfelder in die nächste freie Zeile schreiben
.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Resize(1, 18).Value = Array(strVorname, strNachname, strTitle, strAusweis, strAusweisnummer, strAusweisDate, strNationalitaet, strGeburtsdatum, strTelefon, strMobil, strEmail, strFax, strIHK, strHotel, strStadtrundfahrt, strAbendveranstaltung, strVeranstaltung, strDatumUnterschrift)
'PDF schließen
jsDoc.closeDoc
End If
Next
'Acrobat schließen
objAcro.Exit
'Cleanup
Set objAcro = Nothing
Set jsDoc = Nothing
Set docAV = Nothing
Set docPD = Nothing
End With
MsgBox "Finished Processing PDFs in: '" & folderPDF & "'"
End Sub
Grüße Uwe