okidoki
Goto Top

Excel Sheet mittels "MS print to pdf" ohne Nachfrage erstellen

Guten Abend,

ich nutze das vbs-Script zum Drucken ausgewählter Excel-Sheets, insbesondere aus diesem Beitrag.
Bisher lief auch alles problemlos, nun benötige ich aber keinen Ausdruck, sondern pdf's.
Nach Umstellung auf den Standard-Drucker läuft das Script durch, allerdings möchte der MS-pdf-Drucker nun einen Dateinamen.

Ich suche nach einer Möglichkeit, automatisch - ohne Nachfrage - eine pdf zu erstellen.
Über Hilfe würde ich mich sehr freuen!

Set appXLS = CreateObject("Excel.Application")  
Set wbkXLS = appXLS.Workbooks.Open("D:\test.xlsx", , true)  
wbkXLS.sheets("Sheet1").PrintOut  
wbkXLS.Close 0
Set wbkXLS = Nothing
appXLS.Quit
Set appXLS = Nothing

Gruß
okidoki

Content-ID: 936192912

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

Ausgedruckt am: 19.11.2024 um 17:11 Uhr

mbehrens
mbehrens 07.07.2021 um 22:22:22 Uhr
Goto Top
Zitat von @OKIDOKI:

Bisher lief auch alles problemlos, nun benötige ich aber keinen Ausdruck, sondern pdf's.
Nach Umstellung auf den Standard-Drucker läuft das Script durch, allerdings möchte der MS-pdf-Drucker nun einen Dateinamen.

Ich suche nach einer Möglichkeit, automatisch - ohne Nachfrage - eine pdf zu erstellen.

Wie wäre die Verwendung der Methode ExportAsFixedFormat statt PrintOut?
rubberman
Lösung rubberman 07.07.2021 um 22:28:50 Uhr
Goto Top
PrintOut unterstützt eine Reihe an Argumenten.
https://docs.microsoft.com/en-us/office/vba/api/excel.sheets.printout
wbkXLS.sheets("Sheet1").PrintOut , , , , "Microsoft Print To PDF", true, , "C:\irgendwo\test.pdf"  

Steffen
OKIDOKI
OKIDOKI 07.07.2021 um 23:07:49 Uhr
Goto Top
SUPER!!!

Klar sind die Anweisungen bei MS, das Geheimnis liegt in der Zusammensetzung!

Ich danke dir face-smile

Eine Anschlussfrage hätte ich dennoch: Wo platziere ich die Anweisung zum Ausdruck von Querformat? (Das kommt ja zum Tragen, falls es in der Datei nicht angegeben ist ...)
rubberman
Lösung rubberman 07.07.2021 um 23:15:28 Uhr
Goto Top
OKIDOKI
OKIDOKI 07.07.2021 um 23:53:17 Uhr
Goto Top
SENSATIONELL!!!

Ich danke dir von Herzen, Thread gelöst!!!

okidoki
148934
148934 08.07.2021 aktualisiert um 00:43:03 Uhr
Goto Top
Zitat von @mbehrens:

Wie wäre die Verwendung der Methode ExportAsFixedFormat statt PrintOut?
Würde ich auch direkt so machen
wbkXLS.sheets("Sheet1").ExportAsFixedFormat 0,"d:\datei.pdf"  
https://docs.microsoft.com/de-de/office/vba/api/excel.worksheet.exportas ...
OKIDOKI
OKIDOKI 08.07.2021 um 11:06:44 Uhr
Goto Top
Schnippsel, du machst mich neugierig ... face-smile

Funktioniert genauso gut! Kannst du mir kurz sagen, was anders/vorteilhafter ist?

Bin ja immer für Verkürzungen face-smile
148934
148934 08.07.2021 aktualisiert um 11:49:31 Uhr
Goto Top
Zitat von @OKIDOKI:
Funktioniert genauso gut! Kannst du mir kurz sagen, was anders/vorteilhafter ist?
Das funktioniert eben auch ohne das der MS PDF Drucker im System vorhanden sein muss, denn ohne läuft das erste auf einen Fehler wenn der Drucker fehlt face-wink, jede externe Abhängigkeit sollte man ja wenn möglich vermeiden. Qualitätsmäßig schenken beide sich nichts.
OKIDOKI
OKIDOKI 08.07.2021 aktualisiert um 12:20:33 Uhr
Goto Top
Lieben Dank für die Erklärung! Da ich plane das Script auch woanders einzusetzen ist es ein Mega-Tipp (und erspart einen weiteren Thread face-wink)

Besten Dank für deine Erklärung und vor allem für die Zeile!

Ich hoffe, dass dieses Script auch anderen hilft!
Hier noch einmal vollständig.
VBS-Script zum Druck eines einzelnen Excel-Sheets in pdf ohne Rückmeldungen:

Set appXLS = CreateObject("Excel.Application")  
Set wbkXLS = appXLS.Workbooks.Open("D:\st-plan.xlsx", , true)  
wbkXLS.sheets("plan").PageSetup.Orientation = 1  
wbkXLS.sheets("plan").ExportAsFixedFormat 0,"d:\datei.pdf"  
wbkXLS.Close 0
Set wbkXLS = Nothing
appXLS.Quit
Set appXLS = Nothing

Gruß okidoki