Einzelne Zeilen aus PDF in Excel per VBA auslesen
Hallo zusammen,
ich möchte diesen Thread PDF auslesen und per VBA in Excel schreiben hier mal wieder ein bisschen aufwärmen, weil er mir auch sehr viel geholfen hat, Danke dafür schonmal vorweg.
In meinem Falle nutze ich das Script um PDF-Rechnungen auszulesen und in Excel (2013) zu erfassen. Dank der zusätzlichen Regex-Tipps und -Links aus dem Thread bekomme ich so die Eckdaten (Rechnungsnummer, Datum, Gesamtbetrag etc.) wunderbar raus, aber wie schaffe ich es, die Detailangaben der Rechnungen auszulesen?
Meine Rechnungen sehen ungefähr so aus:
Am liebsten wäre mir jetzt eine Liste, in der ich je gearbeitetem Tag eine Zeile bekomme, für die Auswertung brauche ich natürlich je Zeile auch allgemeine Angaben, aber wie gesagt, das klappt ja schon. Wie muss ich vorgehen, um die einzelnen Detailzeilen rauszuziehen, aber nicht alle Zeilen der Rechnung? Mit Regex komme ich da ja nicht wirklich weiter...
Hat noch jemand hier einen Tipp für mich? Danke schonmal im Voraus!
Gruß,
Carsten
ich möchte diesen Thread PDF auslesen und per VBA in Excel schreiben hier mal wieder ein bisschen aufwärmen, weil er mir auch sehr viel geholfen hat, Danke dafür schonmal vorweg.
In meinem Falle nutze ich das Script um PDF-Rechnungen auszulesen und in Excel (2013) zu erfassen. Dank der zusätzlichen Regex-Tipps und -Links aus dem Thread bekomme ich so die Eckdaten (Rechnungsnummer, Datum, Gesamtbetrag etc.) wunderbar raus, aber wie schaffe ich es, die Detailangaben der Rechnungen auszulesen?
Meine Rechnungen sehen ungefähr so aus:
Kopfdaten
Kopfdaten
Kopfdaten
Kopfdaten
Kopfdaten
Kopfdaten
Kopfdaten
Allgemeine Informationen
Allgemeine Informationen
Allgemeine Informationen
Rechnungsdetails:
Bestellung 0815
Mitarbeiter 01 Tag 01 - Tag 03
Tag 01 5 STD 42,00 EUR 210,00 EUR
Tag 02 5 STD 42,00 EUR 210,00 EUR
Tag 03 5 STD 42,00 EUR 210,00 EUR
Mitarbeiter 02 Tag 01 - Tag 03
Tag 01 5 STD 42,00 EUR 210,00 EUR
Tag 02 5 STD 42,00 EUR 210,00 EUR
Tag 03 5 STD 42,00 EUR 210,00 EUR
Gesamt Bestellung 0815 1.260,00 EUR
Bestellung 0816
Mitarbeiter 01 Tag 01 - Tag 03
Tag 01 5 STD 42,00 EUR 210,00 EUR
Tag 02 5 STD 42,00 EUR 210,00 EUR
Tag 03 5 STD 42,00 EUR 210,00 EUR
Mitarbeiter 02 Tag 01 - Tag 03
Tag 01 5 STD 42,00 EUR 210,00 EUR
Tag 02 5 STD 42,00 EUR 210,00 EUR
Tag 03 5 STD 42,00 EUR 210,00 EUR
Gesamt Bestellung 0816 1.260,00 EUR
Gesamt 2.520,00 EUR
Fußzeile
Fußzeile
Fußzeile
Fußzeile
Am liebsten wäre mir jetzt eine Liste, in der ich je gearbeitetem Tag eine Zeile bekomme, für die Auswertung brauche ich natürlich je Zeile auch allgemeine Angaben, aber wie gesagt, das klappt ja schon. Wie muss ich vorgehen, um die einzelnen Detailzeilen rauszuziehen, aber nicht alle Zeilen der Rechnung? Mit Regex komme ich da ja nicht wirklich weiter...
Hat noch jemand hier einen Tipp für mich? Danke schonmal im Voraus!
Gruß,
Carsten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 266696
Url: https://administrator.de/forum/einzelne-zeilen-aus-pdf-in-excel-per-vba-auslesen-266696.html
Ausgedruckt am: 19.01.2025 um 17:01 Uhr
6 Kommentare
Neuester Kommentar
Hallo Carsten,
Doch, mit folgendem Pattern:
Mit diesem landen die Tag .... Zeilen jeweils in einem Block den du dann hinterher mit einem Split() anhand der Zeilenumbrüche trennen kannst.
Dazu muss im Code das Regex-Object auf Global geschaltet werden und MultiLine auf True gesetzt werden
Alternativ kannst du natürlich auch jede dieser Zeilen direkt einzeln rausziehen:
Grüße Uwe
Doch, mit folgendem Pattern:
(^Tag.*?$\s*){1,}
Dazu muss im Code das Regex-Object auf Global geschaltet werden und MultiLine auf True gesetzt werden
regex.Global = True
regex.MultiLine = True
(^Tag.*$)
Zitat von @cuwie.de:
Multiline und Global sind beide true, aber das Script gibt mir immer nur den ersten Treffer in einer Datei raus, wo ist denn da der Wurm drin?
Du musst alle Matches durchlaufen da es ja mehrere sind/sein können:Multiline und Global sind beide true, aber das Script gibt mir immer nur den ersten Treffer in einer Datei raus, wo ist denn da der Wurm drin?
Set matches = regex.Execute(strTXT)
for each match in matches
' nur als Beispiel in einer MsgBox ausgeben
msgbox match
next