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-ID: 624683

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

Ausgedruckt am: 17.11.2024 um 09:11 Uhr

cykes
cykes 22.11.2020 aktualisiert um 10:45:11 Uhr
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
herr-jfs
herr-jfs 22.11.2020 um 18:01:43 Uhr
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?
cykes
cykes 23.11.2020 um 07:17:26 Uhr
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