Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

pdftoText in WSHshell

Forumthread: pdftoText in WSHshell

pdftoText in WSHshell
30.04.2020 18:52:41
Dirk
Hallo zusammen,
ich habe in ein Problem beim Aufruf pdftotext mit einem zusätzlichen Parameter für die zu erzeugende Textdatei. "pdftotext" erzeugt die txt-Datei imme rim gleichen Verzeichnis wie die pdf-Datei. Dies möchte ich nicht.
Hier ein Auszug aus meinerm VBA-Code, der auch klappt (mit obigen Problem):
Set WSHShell = CreateObject("WScript.Shell")
test = """" & ThisWorkbook.Path & "\test.txt""
strCMDLine = """" & ThisWorkbook.Path & "\pdftotext.exe"" -raw -layout -nopgbrk "
WSHShell.Run strCMDLine & """" & strDateiname & """", 0, True
Ändere ich den Aufruf wie folgt ab, passiert nichts mehr
WSHShell.Run strCMDLine & """" & strDateiname & """" & """" & test &"""", 0, True
Kann mir hier jemand den entscheidenden Tipp geben.
Danke schon mal im voraus
Dirk
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: pdftoText in WSHshell
01.05.2020 10:01:46
Dirk
Hallo Luschi,
habe es so umgesetzt (denke ich jedenfalls) wie in der Anleitung beschrieben, aber leider kommt der Fehler: "Laufzeitfehler 53: Datei nicht gefunden."
Hier die Umsetzung(Ergebnissse dereinezlen Steps habe ichals Kommentar hinzugefügt:
sExecuteFile = "" & ThisWorkbook.Path & "\pdftotext.exe"""
'"F:\081 xxx\pdftotext.exe""
sSourcePDF = """" & strDateiname & """"
'""F:\CLEAN VERSION\Pj05 HF 2019-10-20.pdf""
sTargetTXT = """" & ThisWorkbook.Path & "\test.txt"
'""F:\081 xxx\test.txt"
sCommand = sExecuteFile & " -raw -layout -nopgbrk " & sSourcePDF & " " & sTargetTXT
'"F:\081 xxx\pdftotext.exe" -raw -layout -nopgbrk "F:\CLEAN VERSION\Pj05 HF 2019-10-20.pdf" "F:\081 xxx\test.txt"
vResult = Shell(sCommand, vbHide)
Führe dich den Befehl aus sCommand direkt auf der Kommandozeile aus funktioniert es und erstellt mir die Ausgabedatei unter dem angegeben Nachm in das angegeben Verzeichnis.
Für mich deutet der Fehler darauf hin, dass er auch die Datei "test.txt" umwandeln will, die es natürlich nicht gibt - es ist das die Ausgabedatei für pdftotext.
Lasse ich die Ausgabedatei weg funktioniert das ganze (denn erzeugt er aber eine Ausgabedatei im Verzeichnis des Eingabedatei als txt-DAtei mit den Namen der Eingabedatei - dies kannich aber so nicht gebrauchen.
Ich hoffe, es findet einer den Fehler und kann mir helfen
Danke schon mal und Gruß
Dirk
Danke und GR
Anzeige
pdftoText in WSHshell
01.05.2020 12:31:59
Anton
Hallo Dirk,
ersetze:

sExecuteFile = "" & ThisWorkbook.Path & "\pdftotext.exe"""

durch:

sExecuteFile = ThisWorkbook.Path & "\pdftotext.exe"
mfg Anton
AW: pdftoText in WSHshell
01.05.2020 16:10:39
Dirk
Hallo Anton,
das war es - vielen Dank (auch Luschi)
Gruß
Dirk
Anzeige
;
Anzeige

Infobox / Tutorial

pdftoText in WSHshell: Anleitung zur Verwendung in VBA


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle "Einfügen" > "Modul".

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Sub ConvertPDFtoText()
        Dim WSHShell As Object
        Dim strDateiname As String
        Dim sExecuteFile As String
        Dim sSourcePDF As String
        Dim sTargetTXT As String
        Dim sCommand As String
    
        ' Pfad zur PDF-Datei
        strDateiname = "Pfad\zu\DeinerDatei.pdf" ' Ändere dies entsprechend
    
        ' pdftotext.exe Pfad
        sExecuteFile = ThisWorkbook.Path & "\pdftotext.exe"
        sSourcePDF = """" & strDateiname & """"
        sTargetTXT = """" & ThisWorkbook.Path & "\test.txt" ' Ausgabe-Pfad
    
        ' Befehl zur Ausführung
        sCommand = sExecuteFile & " -raw -layout -nopgbrk " & sSourcePDF & " " & sTargetTXT
    
        ' Ausführen des Befehls
        Set WSHShell = CreateObject("WScript.Shell")
        WSHShell.Run sCommand, 0, True
    End Sub
  4. Anpassungen vornehmen: Stelle sicher, dass der Pfad zu pdftotext.exe und die PDF-Datei korrekt sind.

  5. Makro ausführen: Führe das Makro aus, um die PDF-Datei in eine Textdatei zu konvertieren.


Häufige Fehler und Lösungen

  • Laufzeitfehler 53: Datei nicht gefunden: Überprüfe, ob der Pfad zu pdftotext.exe korrekt ist. Stelle sicher, dass die Datei im angegebenen Verzeichnis vorhanden ist.

  • Falscher Ausgabepfad: Wenn die Ausgabedatei im falschen Verzeichnis erstellt wird, überprüfe den sTargetTXT-Parameter. Stelle sicher, dass der Pfad korrekt angegeben ist.

  • Parameterübergabe: Achte darauf, dass die Parameter für wshshell.run richtig gesetzt sind. Überprüfe die Anführungszeichen, um sicherzustellen, dass der Befehl korrekt interpretiert wird.


Alternative Methoden

Eine alternative Methode zur Ausführung von pdftotext besteht darin, die Shell-Funktion zu verwenden:

vResult = Shell(sCommand, vbHide)

Diese Methode kann in bestimmten Fällen schneller sein, erfordert jedoch eine sorgfältige Handhabung der Parameter, um Laufzeitfehler zu vermeiden.


Praktische Beispiele

Hier ist ein einfaches Beispiel für die Verwendung von pdftotext in einem VBA-Skript:

Sub BeispielConversion()
    Dim strDateiname As String
    strDateiname = "C:\Pfad\zu\deinerDatei.pdf"
    Call ConvertPDFtoText(strDateiname)
End Sub

In diesem Beispiel wird die Funktion ConvertPDFtoText aufgerufen, um die angegebene PDF-Datei zu konvertieren.


Tipps für Profis

  • Parameter optimieren: Experimentiere mit verschiedenen pdftotext-Parametern, um die besten Ergebnisse zu erzielen. Der Parameter -raw kann in einigen Fällen nützlich sein, um das Layout beizubehalten.

  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung, um Probleme während der Ausführung besser nachvollziehen zu können. Dies kann mit einfachen Debug.Print Anweisungen in deinem Code erreicht werden.

  • Batch-Verarbeitung: Wenn du mehrere PDFs konvertieren musst, erstelle eine Schleife, die durch alle Dateien in einem Verzeichnis iteriert.


FAQ: Häufige Fragen

1. Wie kann ich pdftotext.exe von einem anderen Verzeichnis aus aufrufen?
Du musst den vollständigen Pfad zu pdftotext.exe in deinem VBA-Code angeben, z.B. sExecuteFile = "C:\Pfad\zu\pdftotext.exe".

2. Was bedeutet Laufzeitfehler 53?
Laufzeitfehler 53 tritt auf, wenn eine Datei nicht gefunden werden kann. Überprüfe die Pfade zu pdftotext.exe und der PDF-Datei.

3. Kann ich pdftotext.exe ohne VBA verwenden?
Ja, du kannst pdftotext direkt über die Eingabeaufforderung verwenden, indem du den Befehl in der Form pdftotext.exe "input.pdf" "output.txt" eingibst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige