herr-jfs
Goto Top

Daten aus PDF in Excel mit pdftotext - Laufzeitfehler

Moin,

ich suche nach einer Möglichkeit, Daten (Rechnungsnummer und Dateinamen) aus PDF-Dateien in eine Excel-Tabelle zu schreiben.

Hierzu habe ich bereits die folgenden Beiträge gefunden:
PDF auslesen und per VBA in Excel schreiben
Pdf auslesen und in excel schreiben

Allerdings scheitere ich derzeit am Ablauf des Skripts, weil ich an dieser Stelle:

  For i = 1 To colPFiles.Count
         WSHShell.Run strCMDLine & """" & colPFiles.Item(i) & """", 0, True  
    Next

immer rausgeworfen werden mit
Laufzeitfehler '-2147024894 (80070002)':

Automatisierungsfehler
Das System kann die angegebene Datei nicht finden.

Vielleicht kann mir jemand einen Wink in die richtige Richtung dazu geben.

Beste Grüße
Ben

Content-Key: 624683

Url: https://administrator.de/contentid/624683

Printed on: April 20, 2024 at 00:04 o'clock

Member: cykes
cykes Nov 22, 2020 updated at 09:45:11 (UTC)
Goto Top
Moin,

habe collinardos Script nur grob überflogen und nur eine Vermutung, warum bei Dir der Fehler kommt: Liegt die pdftotext.exe im gleichen Pfad (ThisWorkbook.Path) wie das VBA-Script?
strCMDLine = """" & ThisWorkbook.Path & "\pdftotext.exe"" -raw -layout -nopgbrk "  
Lass Dir zur Laufzeit mal den Inhalt von strCMDLine ausgeben, dort muss er die .exe auch finden.

Gruß

cykes
Member: herr-jfs
herr-jfs Nov 22, 2020 at 17:01:43 (UTC)
Goto Top
Vielen Dank, meinen Fehler für den Laufzeitfehler habe ich gefunden.

Ich habe das Skript von mak-xxl aus diesem Beitrag (unteres Skript) verwendet, das grundsätzlich auch funktioniert.
Pdf auslesen und in excel schreiben

In meinem Anwendungsbeispiel suche ich nach dem Begriff "Rechnung" (um die Rechnungsnummer zu suchen), und die taucht in mehrseitigen PDFs mehrfach auf. Das führt dazu, dass die Nummer der mehrseitigen Rechnung dann mehrfach auftaucht, das Skript aber nicht mehr alle Dateien durchgeht und ein unvollständiges Ergebnis auswirft.

    For i = 1 To colTFiles.Count
        strTXT = FSO.OpenTextFile(colTFiles.Item(i)).ReadAll
        objWks.Cells(z, 2) = colPFiles.Item(i)                      ' Dateiname in Spalte B  
        While InStr(1, strTXT, strPrefix, vbTextCompare) > 0
            strTXT = Mid(strTXT, InStr(1, strTXT, strPrefix) + Len(strPrefix) - 1)
            objWks.Cells(z, 1) = Left(strTXT, intSWLen)             ' Wert eintragen  
            z = z + 1
        Wend
        Kill colTFiles.Item(i)                                      ' txt-Files löschen  
    Next

Wie muss ich das Skript ändern, dass jede Datei nur einmal augenommen wird?
Member: cykes
cykes Nov 23, 2020 at 06:17:26 (UTC)
Goto Top
Zitat von @herr-jfs:
[...]
Wie muss ich das Skript ändern, dass jede Datei nur einmal augenommen wird?
Ich bin jetzt nicht so der VBA-Profi, am besten fragst Du da den Autor des Scripts - entweder per PN oder durch einen Kommentar im verlinkten Thread. Er war zumindest dieses Jahr nochmal angemeldet.

Gruß

cykes