Hallo Stephan,
Stephan hat geschrieben:Inwiefern wäre die Art des Starts des Makros Garant dafür das mit ThisComponent nicht unerwünschterweise ein falsches Objekt referenziert werden könnte? Bitte um Erklärung.
Ich gehe jetzt mal davon aus, dass das Makro in dem
erzeugten Dokument (vielleicht eine Dokumentvorlage) hinterlegt ist. Dann sollte sich
Code: Alles auswählen
oDoc = ThisComponent
oDoc.CurrentController.Frame.ContainerWindow.toFront()
schon auf dieses Dokument beziehen.
Wenn in dem
erzeugenden Dokument aber nicht mitgegeben wird, dass in dem
erzeugten Dokument Makros ausgeführt werden dürfen
Code: Alles auswählen
Dim myProp(0) as new com.sun.star.beans.PropertyValue
myProp(0).name="MacroExecutionMode"
myProp(0).value = 4 'ALWAYS_EXECUTE_NO_WARN 4 Makros werden immer ausgeführt, keine Warnung
url=converttourl("C:\test.sxw")
oDocument = StarDesktop.loadComponentFromURL(url, "_blank", 0, myFileProp() )
dann wird das Makro in der "Vorlage" einfach unterdrückt.
Das ist halt
meine Vermutung das es so ist.
Feststellen könnte man das mit einer einfachen MsgBox im
erzeugten Dokument.
Code: Alles auswählen
sub vordergrund
Dim oDoc
oDoc = ThisComponent
oDoc.CurrentController.Frame.ContainerWindow.toFront()
msgBox "Hallo User, Makro wird ausgeführt!"
end sub
Wenn die MsgBox angezeigt wird und das Doc nicht in den Vordergrund rückt, dann hast Du mit Deiner Vermutung recht, was ich Dir auch gönne.
Ich warte jetzt jedenfalls einfach mal ab was Thomas berichtet.
Jürgen