.bat Skript für PDF Umwandlung - Excel und Visio Dateien funktionieren nicht


#1

Hallo zusammen

Ich muss für die Arbeit ein kleines Skript schreiben, welches Office Dateien in eine PDF Datei umwandelt. Die entsprechenden Dateien sind in einer .csv Datei aufgelistet. Mit einer FOR-Schleife wird die CSV Datei ausgelesen und eine Datei nach der anderen in ein PDF umgewandelt. Bei den Word Dateien funktioniert dies einwandfrei. Bei den Excel und Visio Dateien leider nicht. Bei den Excel Dateien öffnet sich Excel aber bleibt leer und es passiert nichts. Bei den Visio Dateien erscheint die Meldung “Dateiname ungültig”. Der in der CSV hinterlegene Pfad ist jedoch korrekt (wenn ich ihn in mein Explorer Fenster hineinkopiere öffnet sich die Datei".

Hat jemand eine Ahnung an was dies liegt? Ist es überhaupt möglich dies umzusetzen?

Vielen Dank für eure Hilfe :slight_smile:


#2

Hallo Yannik

ich vermute, Du verwendest dann PDFCreator.exe /PrintFile xyz für die Konvertierung?
Hierbei ließt PDFCreator den zum jeweiligen Dateitypen zugehörigen Druckbefehl aus der Registry aus und führt diesen durch. Für Excel-Dateien ist dieser wohl oftmals gar nicht korrekt eingetragen (was sich ggf. einfach manuell korrigieren lässt), woran das Problem mit den Visio-Dateien liegt lässt sich nicht genau sagen. Hast Du den Pfad in Anführungszeichen gesetzt?
Allgemein bietet sich für die Verarbeitung von Office-Dokumenten oft an, über VBA auf die PDFCreator COM-Schnittstelle zuzugreifen. Beispiele hierzu findest Du im PDFCreator Programmordner unter COM Scripts\Word - VBA.

Beste Grüße

Robin


#3

Hallo Robin

Ja genau, ich verwende PDFCreator /PrintFile /Outputfile etc für die Konvertierung. Wo in der Registry ist der Druckbefehl gespeichert und was müsste dort korrekterweise drin stehen? Den Pfad ist in Anführungszeichen gesetzt.
Was sind denn die Vorteile, wenn man mit VBA auf die COM-Schnittstelle zugreift?


#4

Um den Befehl z.B. fpr .xls Dateien zu ermitteln/korrigieren, müsstes Du zunächst nachschauen, was unter HKEY_CLASSES_ROOT.xls (Standard) in der Registry eingetragen ist. Auf meiner Maschine ist das “Excel.Sheet.8”
Dann muss der unter HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Printto\command hinterlegt command funktionieren, bei mir ist dies “C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE” /q “%1” /j “%2”
Der Befehl funktioniert allerdings nicht korrekt, die Datei auf den Standarddrucker ausgegeben, der angegebene Drucker wird ignoriert.
Der Vorteil von VBA wäre die allgemein viel bessere Kontrolle über den gesamten Workflow sowie die Möglichkeit, sämtliche VBA Funktionen verwenden zu können. Wie im Detail die Druckbefehle in VBA umgesetzt sind und ob diese im Hintergrund ggf. auf die gleichen Stellen in der Registry zugreifen, weiß ich leider nicht.

Beste Grüße

Robin