Makroausführung OLE Automation
Moderator: Moderatoren
Makroausführung OLE Automation
Hallo zusammen,
ich steh hier vor einem für mich ernsten Problemchen. Eventuell ist die Lösung jedoch total einfach.
Ich habe eine Vorlage für ein Writer-Dokument (.ott), die ein Makro enthält, welches beim -Dokument Erzeugen- Event ausgelöst werden soll.
Das geschieht auch anstandslos, falls ich das Dokument über einen Doppelklick im Datei-Explorer unter Windows öffne.
Sodann wird OpenOffice-Writer gestartet, es erscheint der Hinweis von wegen dieses Dokument enthält ein Makro und ein neues Dokument wird aus der Vorlage erzeugt.
Allerdings wird das Makro nicht ausgeführt, wenn ich die Vorlage aus LotusNotes heraus per OLE-Automation öffne. Und das ist hinreichend blöd.
Gehe ich in dem erzeugten Dokument über Extras - Makros usw., wähle das Makro -Main- und klicke auf -Ausführen- erscheint die Meldung
Aus Sicherheitsgründen ist dieses Makro nicht ausführbar
Vielleicht noch ein paar Daten
OpenOffice-Version 2.2.0
Lotus Notes Version 7.0.1
Ich öffne die Vorlage aus Notes heraus, da hier erstmal Daten gesammelt werden, die dann in das erzeugte Dokument übernommen werden sollen. Das klappt auch, nur fehlt dann anschließend die Funktion für Textbausteine, die ja in dem nicht ausgeführten Code enthalten ist.
ich steh hier vor einem für mich ernsten Problemchen. Eventuell ist die Lösung jedoch total einfach.
Ich habe eine Vorlage für ein Writer-Dokument (.ott), die ein Makro enthält, welches beim -Dokument Erzeugen- Event ausgelöst werden soll.
Das geschieht auch anstandslos, falls ich das Dokument über einen Doppelklick im Datei-Explorer unter Windows öffne.
Sodann wird OpenOffice-Writer gestartet, es erscheint der Hinweis von wegen dieses Dokument enthält ein Makro und ein neues Dokument wird aus der Vorlage erzeugt.
Allerdings wird das Makro nicht ausgeführt, wenn ich die Vorlage aus LotusNotes heraus per OLE-Automation öffne. Und das ist hinreichend blöd.
Gehe ich in dem erzeugten Dokument über Extras - Makros usw., wähle das Makro -Main- und klicke auf -Ausführen- erscheint die Meldung
Aus Sicherheitsgründen ist dieses Makro nicht ausführbar
Vielleicht noch ein paar Daten
OpenOffice-Version 2.2.0
Lotus Notes Version 7.0.1
Ich öffne die Vorlage aus Notes heraus, da hier erstmal Daten gesammelt werden, die dann in das erzeugte Dokument übernommen werden sollen. Das klappt auch, nur fehlt dann anschließend die Funktion für Textbausteine, die ja in dem nicht ausgeführten Code enthalten ist.
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Makroausführung OLE Automation
Offensichtlich das Problem des Aufrufs: hier musst Du OOo die Ausführung von Makros erlauben.evac hat geschrieben: Aus Sicherheitsgründen ist dieses Makro nicht ausführbar
Vielleicht noch ein paar Daten
OpenOffice-Version 2.2.0
Lotus Notes Version 7.0.1
Ich öffne die Vorlage aus Notes heraus, da hier erstmal Daten gesammelt
Deshalb die Frage: wie findet der Aufruf statt?
Reicht vielleicht auch das Einstellen der Makrosicherheit, Stichwort "Vertrauenswürdige Quellen"?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Makroausführung OLE Automation
Der Aufruf erfolgt in Notes mit folgender LotusScript-Zeile:
Set objDoc = objDskTop.loadComponentFromUrl(docUrl, "_blank", 0, args)
docUrl enthält dann sowas wie -file:///i:/OO Textvorlage/blankoBrief.ott-
Ich habe diesen Pfad (also bis OO Textvorlage) auch schnonmal zu den Vertrauenswürdigen Quellen hinzugefügt und die Sicherheitsstufe auf -Sehr hoch- gesetzt. Hat auch nicht geholfen.
Aber wie gesagt, kann diese Vorlage -blankoBrief.ott- ja auch im Datei-Explorer doppelgeklickt werden.
Dann funktioniert das mit dem Code in der Vorlage seltsamerweise.
Set objDoc = objDskTop.loadComponentFromUrl(docUrl, "_blank", 0, args)
docUrl enthält dann sowas wie -file:///i:/OO Textvorlage/blankoBrief.ott-
Ich habe diesen Pfad (also bis OO Textvorlage) auch schnonmal zu den Vertrauenswürdigen Quellen hinzugefügt und die Sicherheitsstufe auf -Sehr hoch- gesetzt. Hat auch nicht geholfen.
Aber wie gesagt, kann diese Vorlage -blankoBrief.ott- ja auch im Datei-Explorer doppelgeklickt werden.
Dann funktioniert das mit dem Code in der Vorlage seltsamerweise.
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Makroausführung OLE Automation
Also, wenn aus dem Explorer ausgeführt wird, sollte Deine Quelle als vertrauenswürdig eingestuft werden.
Für einen Aufruf aus dem Skript (sieht wie VBA aus, eehh?) gebe dem Code die Makroerlaubnis mit
(Achtung: Zeilenumbruch)
Klappt es damit?
Für einen Aufruf aus dem Skript (sieht wie VBA aus, eehh?) gebe dem Code die Makroerlaubnis mit
Code: Alles auswählen
Dim oOpenProperties(0) as new com.sun.star.beans.PropertyValue
' open options:
' 0: execute macros with no warning message
oOpenProperties( 0 ).Name = _
"MacroExecutionMode"
oOpenProperties( 0 ).Value = _
com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN ' value 4
Set objDoc = objDskTop.loadComponentFromUrl(docUrl, "_blank", 0, oOpenProperties() )
Klappt es damit?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Makroausführung OLE Automation
Na das werde ich doch mal morgen ausprobieren!
Allerdings wäre das ja ein netter Parameter. Kann man einfach so den Hinweis von wegen Makros enthalten umgehen und Makros auf alle Fälle ausführen?
Also wenn das hinhaut, wäre ich ja schon einigermaßen überrascht.
LotusScript und VBA haben in der Tat ne Menge Ähnlichkeiten.
Das macht es dann ganz bequem, wenn man zwischen beiden wechseln muss.
Allerdings wäre das ja ein netter Parameter. Kann man einfach so den Hinweis von wegen Makros enthalten umgehen und Makros auf alle Fälle ausführen?
Also wenn das hinhaut, wäre ich ja schon einigermaßen überrascht.
LotusScript und VBA haben in der Tat ne Menge Ähnlichkeiten.
Das macht es dann ganz bequem, wenn man zwischen beiden wechseln muss.
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Makroausführung OLE Automation
Wie könnte eine Automatisierung funktionieren, wenn es einen solchen Schalter nicht gäbe?
Fundstelle: DevelopersGuide und Mögliche Schalter-Werte
Fundstelle: DevelopersGuide und Mögliche Schalter-Werte
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Makroausführung OLE Automation
Ok, ich verneige mich vorläufig 
Denn es muss noch auf einem in Hannover gehosteten System laufen. Aber dann kommt die endgültige Verneigung.
Hab allerdings gleich Value -4- genommen und nicht die ausgeschriebene Version. Mir ist so, als hätte ich das schonmal versucht und es ging nicht.
Was meine Verwunderung wegen dieser no_warn Geschichte betrifft:
Ich habe tatsächlich erwartet, dass das für alle Makros, auch solche, die nicht signed sind oder aus vertrauenswürdigen Quellen kommen, funktioniert.
Den gehosteten Test mache ich am Montag und bin da guter Dinge.

Denn es muss noch auf einem in Hannover gehosteten System laufen. Aber dann kommt die endgültige Verneigung.
Hab allerdings gleich Value -4- genommen und nicht die ausgeschriebene Version. Mir ist so, als hätte ich das schonmal versucht und es ging nicht.
Was meine Verwunderung wegen dieser no_warn Geschichte betrifft:
Ich habe tatsächlich erwartet, dass das für alle Makros, auch solche, die nicht signed sind oder aus vertrauenswürdigen Quellen kommen, funktioniert.
Den gehosteten Test mache ich am Montag und bin da guter Dinge.
Re: Makroausführung OLE Automation
Hallo,
habe das selbe Problem, nur habe ich es mit dem oben angegebenen Code nicht hingekriegt....
Es könnte natürlich an meiner Übersetzung in Lotus Script liegen
hat jemand das Problem schon gelöst???
MFG
MoC08
habe das selbe Problem, nur habe ich es mit dem oben angegebenen Code nicht hingekriegt....
Es könnte natürlich an meiner Übersetzung in Lotus Script liegen
hat jemand das Problem schon gelöst???
MFG
MoC08
Re: Makroausführung OLE Automation
hier mein Code (bringt immer die Fehlermeldung Subscript out of range)
Code: Alles auswählen
Dim SM As Variant
Dim Desktop As Variant
Dim oOpenProperties()
Set SM=CreateObject("com.sun.star.ServiceManager")
Set Desktop=SM.createInstance("com.sun.star.frame.Desktop")
'0: execute macros with no warning message
oOpenProperties(0).Name = "MacroExecutionMode"
oOpenProperties(0).Value = "com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN" ' value 4
Dim objDocument As Variant
Set objDocument=Desktop.loadComponentFromURL("file:///c:/BriefVorlage01.ott","_blank",0,oOpenProperties())
Re: Makroausführung OLE Automation
Das Problem hat mich auch schon mal beschäftigt und folgender Code hat nicht funktioniert
bis ich folgende Codezeilen verwendet habe:
Makros in den per Makro geladenen Dokumenten lassen sich anstandslos ausführen.
Code: Alles auswählen
Dim mArgs(0) as New com.sun.star.beans.PropertyValue
mArgs(0).Name = "MacroExecutionMode"
mArgs(0).Value = "com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN"
oDocument = StarDesktop.loadComponentFromURL(sUrl,"_blank",0, mArgs())
Code: Alles auswählen
Dim mArgs(0) as New com.sun.star.beans.PropertyValue
mArgs(0).Name = "MacroExecutionMode"
mArgs(0).Value = 4
oDocument = StarDesktop.loadComponentFromURL(sUrl,"_blank",0, mArgs())
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Makroausführung OLE Automation
Liegt das an den Anführungszeichen bei der .Value Zuweisung:turtle47 hat geschrieben:... und folgender Code hat nicht funktioniert
Code: Alles auswählen
Sub sayKonstante
print com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN
print com.sun.star.document.MacroExecMode.USE_CONFIG_APPROVE_CONFIRMATION
End Sub
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Makroausführung OLE Automation
... kann es sein, dass Deine Meldung am fehlenden (fehlerhaften!) Datentyp liegt??!MoC08 hat geschrieben:hier mein Code (bringt immer die Fehlermeldung Subscript out of range)Code: Alles auswählen
Dim SM As Variant Dim Desktop As Variant Dim oOpenProperties()
Deine oOpenProperties ist ein variant, Du brauchst aber ein
Code: Alles auswählen
as New com.sun.star.beans.PropertyValue
Sagt ja auch die Fehlermeldung: kein Typ.
Klappt es damit?
Haste mal bei DannyB geschaut, der hat doch Delphi-Beispiele...?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)