okidoki
Goto Top

Refresh Excel per Script

Hallo zusammen,

ich nutze ein vb-Script (aus batch), das mir wunderbar aus einem sheet ein pdf erzeugt.
Nun ist das Problem eines fehlenden refreshes nach dem Öffnen. Mit anderen Worten: Excel öffnen, aktualisieren, pdf erzeugen und Excel schließen.
Was mache ich falsch in Zeile 5? (bitte keine Diskussion über Batch ... face-smile)

SET Path=%~dp0

 >print.vbs ECHO Set appXLS = CreateObject("Excel.Application")  
>>print.vbs ECHO Set wbkXLS = appXLS.Workbooks.Open("%Path%\test.xlsx", , true)  
>>print.vbs ECHO wbkXLS.sheets("Aufteilung").RefreshAll  
>>print.vbs ECHO wbkXLS.sheets("Aufteilung").PageSetup.Orientation = 2  
>>print.vbs ECHO wbkXLS.sheets("Aufteilung").ExportAsFixedFormat 0,"%Path%\test.pdf"  

>>print.vbs ECHO wbkXLS.Close 0
>>print.vbs ECHO Set wbkXLS = Nothing
>>print.vbs ECHO appXLS.Quit
>>print.vbs ECHO Set appXLS = Nothing

print.vbs
del print.vbs

Würde mich über einen Tipp freuen face-smile
okidoki

Content-ID: 1772099016

Url: https://administrator.de/forum/refresh-excel-per-script-1772099016.html

Ausgedruckt am: 22.12.2024 um 18:12 Uhr

colinardo
Lösung colinardo 28.01.2022 aktualisiert um 18:01:43 Uhr
Goto Top
Die "RefreshAll" Methode gilt für das "Workbooks" Object nicht für ein Sheet Object
https://docs.microsoft.com/de-de/office/vba/api/excel.workbook.refreshal ...

@echo off
set "pfad=%~dp0"  
set "script=%temp%\print.vbs"  
>"%script%" (  
	ECHO Set appXLS = CreateObject^("Excel.Application"^)  
 	ECHO Set wbkXLS = appXLS.Workbooks.Open^("%pfad%test.xlsx", , true^)  
	ECHO wbkXLS.RefreshAll
	ECHO wbkXLS.sheets^("Aufteilung"^).PageSetup.Orientation = 2  
	ECHO wbkXLS.sheets^("Aufteilung"^).ExportAsFixedFormat 0,"%pfad%test.pdf"  
	ECHO wbkXLS.Close 0
	ECHO Set wbkXLS = Nothing
	ECHO appXLS.Quit
	ECHO Set appXLS = Nothing
)
"%script%"  
del "%script%"  
Grüße Uwe
GrueneSosseMitSpeck
GrueneSosseMitSpeck 28.01.2022 um 18:51:15 Uhr
Goto Top
die Export Methode ist legacy, lieber saveas2 verwenden. Seit Office 2013 oder 2016 so in der Excel API verfügbar. Und läuft auch super wenn man das über einen WEbservice instanziiert.
colinardo
colinardo 28.01.2022 aktualisiert um 19:16:20 Uhr
Goto Top
Zitat von @GrueneSosseMitSpeck:

die Export Methode ist legacy, lieber saveas2 verwenden. Seit Office 2013 oder 2016 so in der Excel API verfügbar.
Du meinst wohl Word.
https://docs.microsoft.com/de-de/office/vba/api/word.saveas2
In Excel gabe es die SaveAs2 Methode noch nie.
https://docs.microsoft.com/de-de/office/vba/api/excel.worksheet
OKIDOKI
OKIDOKI 28.01.2022 aktualisiert um 21:14:34 Uhr
Goto Top
Erst einmal vielen Dank, dass ihr euch meines Problems annehmt face-smile
Den Link von colinardo hatte ich auch gesehen, du hast jetzt aber auch nicht "Workbooks" genutzt oder?
Leider, leider geht es noch nicht, obwohl die zweite Excel-Quelle (aus der er sich die Daten zieht) nun geöffnet ist oder nicht, er aktualisiert sich nicht ... face-sad
PS: Vielleicht fehlt "Inhalte aktivieren" auch noch, da beim normalen Öffnen dies abgefragt wird ...
colinardo
colinardo 28.01.2022 aktualisiert um 22:08:17 Uhr
Goto Top
Zitat von @OKIDOKI:
PS: Vielleicht fehlt "Inhalte aktivieren" auch noch, da beim normalen Öffnen dies abgefragt wird ...
Du musst das Dokument im Trustcenter erst als vertrauenswürdig klassifizieren damit du dies automatisiert machen kannst (wäre ja schön blöd wenn die "bösen Buben" das ohne deine Zustimmung via Code machen könnten)
https://support.microsoft.com/en-us/office/enable-or-disable-activex-set ...

Enable ActiveX controls in the Backstage view
Another method to enable ActiveX controls in a file is via the Microsoft Office Backstage view, the view that appears after you click the File tab, when the yellow Message Bar appears.

Click the File tab.

In the Security Warning area, click Enable Content.

Under Enable All Content, click Always enable this document's active content.  
The file becomes a trusted document.
Trusted documents
OKIDOKI
Lösung OKIDOKI 29.01.2022 aktualisiert um 07:05:09 Uhr
Goto Top
Das waren die entscheidenden Tipps, colinardo!
Ich fasse zusammen:
1. wbkXLS.RefreshAll
2. Guter Tipp Trustcenter, allerdings braucht man zur Aktualisierung nicht über das Trustcenter gehen, was gut ist, da die "Aktualisierung" so für jede einzelne Datei angepasst werden kann -> keine generelle Aktualisierung.
So geht es:
-> Verknüpfungen bearbeiten -> Eingabeaufforderung beim Start ... -> Keine Warnungen anzeigen und Verknüpfungen aktualisieren!

Dann läuft es: Excel-Datei öffnen, akutualisieren, ggfls. pdf erzeugen oder was auch immer und Excel schließen!

Dankeschön für eure Hilfe!!!