Seite 1 von 1
Dokument etwa wie Datenbank(-formulare) mit Startmakro öffnen
Verfasst: Mi 23. Feb 2022, 12:36
von herz4
Die LibreOffice-CL ermöglicht es, beim Öffnen eines Dokuments ein Makro ausführen zu lassen. Allerdings darf dieses Makro nicht im Dokument selbst eingebettet sein, sondern muss "zentral" zugänglich sein, etwa unter "Meine Makros". Die dort liegenden Makros können nun wieder nicht - unmittelbar - Makros steuern, die im Dokument liegen. Dieser Spagat gelingt mir mit einem (zentralen) Startmakro, dass eine - globale - Variable, etwa "STARTMAKRO_AN" auf true setzt, die das (für mich notwendige) Makro, dass im Dokument bei dessen Öffnung ausgeführt wird, abfragt, und entsprechend dem "Schalter" ausführt oder auch nicht. Gleich nach dieser Abfrage muss im (lokalen) Makro die globale Variable wieder auf false gesetzt werden. In der CL wird bei mir dann auch erst das zentrale Makro und dann das Dokument aufgerufen. - Funzt problemlos.
Aber, gibt es für das beschriebene Prozedere, das es mir ermöglicht, Dokumente z. B. nach Absturz oder auch bei (Weiter-)Entwicklung ohne Startmakro aufzurufen, eine "elegantere" Lösung? (Eleganter ist es im täglichen Gebrauch für mich nicht, immer die Kontrollfrage, soll Makro gestartet werden, mit OK zu bestätigen. Der Umgehung dessen dient ja gerade mein "zentraler Schalter".)
Re: Dokument etwa wie Datenbank(-formulare) mit Startmakro öffnen
Verfasst: Do 24. Feb 2022, 17:29
von F3K Total
Moin,
dass einzige, was mir zu dem Thema, insofern ich es überhaupt anhand deines Textes richtig verstanden habe, einfällt ist, dass man beim
LoadComponentFromUrl auch ARGS() mit übergeben kann, mit denen man den
MacroExecutionMode an bzw. ausschalten kann, sprich dem Dokument, was geladen werden soll, Makros auszuführen erlaubt, oder eben nicht.
Das gilt dann für alle Makros im Dokument.
Bsp.:
Code: Alles auswählen
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "MacroExecutionMode"
args1(0).Value = 4 'alle Makros erlauben
sUrl = ConvertToURL("C:\Users\<USER>\Rechnungsvorlage.odt")
oDoc = StarDeskTop.loadComponentFromUrl(sURL,"_blank",0,args1())
Mögliche Values siehe
hier
Gruß R
Re: Dokument etwa wie Datenbank(-formulare) mit Startmakro öffnen
Verfasst: Fr 25. Feb 2022, 11:57
von herz4
Danke R.,
ich bin unsicher, Deine Anregung richtig verstanden zu haben:
Dokument mit "Makros verboten auszuführen" speichern, dann via diesem Startmakro aufrufen, wobei die url auch per Parameter übergeben werden könnte, dann werden die gewünschten Makros - temporär - trotzdem ausgeführt; danach bleibt in dem Dokument die Option "Makros verboten auszuführen" bestehen(!), wenn es geschlossen oder auch verändert gespeichert wird, weshalb beim einfachen Öffnen weiterhin keine Makros ausgeführt werden?! Richtig? - Zumindest scheinst Du mir, mich richtig verstanden zu haben
... dann werde ich es mir mal bei nächster Gelegenheit "reinziehn", probieren. Gefällt mir so, wie ich(!) es verstanden habe, besser als meine bisherige Lösung: Nur noch ein "System"makro zum Öffnen der (interessanten) Dateien.
Mit herz
4lichem Gruß!
Re: Dokument etwa wie Datenbank(-formulare) mit Startmakro öffnen
Verfasst: Fr 25. Feb 2022, 18:04
von F3K Total
Moin,
wenn ich richtig informiert bin, kannst du NICHT "Dokument mit "Makros verboten auszuführen" speichern sondern nur die Makro-Sicherheitseinstellungen auf "hoch" oder "sehr hoch" setzen.
Öffnest du eine Datei per Doppelklick kommt die Info das die Datei Makros enthält, diese aber wegen der Sicherheitseinstellungen nicht ausgeführt werden.
Wenn du die Datei allerdings bei Einstellung "hoch" oder "sehr hoch" mit dem angegebenen lokalen Makro öffnest, funktionieren die Makros in der Datei.
Lädst du die Datei mit dem Makro und nimmst statt der 4 eine 0, wird die Datei ohne Meldung geöffnet, Makros in der Datei laufen dann nicht.
Gruß R