Macros über die COM-Schnittstelle starten

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Macros über die COM-Schnittstelle starten

Beitrag von Stephan »

Vielliecht könnt ihr mir helfen: wie starte ich ein OO-Macro über die COM-Schnittstelle (in meinem Fall aus Lotus script) ?

Weder weiß ich was "Lotus Script" ist, noch was konkret damit gemeint wäre ein Makro "über" die "COM-SChnittstelle" zu starten.

Sofern es aber Lotus Script zulässt ein normales Programm zu starten starte einfach OOo und übergib das Makro als Parameter (ggf. zzgl. Parametern für das Makro selbst) dann wird das Makro entsprechend ausgeführt:

Code: Alles auswählen

soffice macro:///Standard.Module1.Macro1("Parameter1", "Parameter2")
siehe:
viewtopic.php?f=2&t=31173&hilit=soffice



GRuß
Stephan
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Macros über die COM-Schnittstelle starten

Beitrag von Stephan »

Gibts noch eine Möglichkeit
diese Möglichkeit hatte ich bereits benannt. Da Du sie ohne jede Erläuterung ablehnst kann ich Dir auch nicht weiterhelfen, denn dazu müßte ich zunächst einmal verstehen welches Problem auftritt, da ich weiß das das Ganze funktioniert und ich somit kein grundsätzliches Problem kenne.
funktioniert irgendwie nicht
Tja, keine Ahnung ohne zu wissen was "irgendwie" hier bedeuten soll. Der Ausdruck:

dispatcher.executeDispatch(document, ".uno:RunMacro", "macroname", 0, Array())

ist jedoch mutmaßlich schon einmal falsch, da ich nicht annehme das "macroname" der Name des Zielframe (also des 'Fensters' in dem das Dokument(-Objekt) geöffnet ist, was durch "document" in der Codezeile repräsentiert ist) ist.
Siehe auch:
http://api.openoffice.org/docs/common/r ... teDispatch


Gruß
Stephan
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Macros über die COM-Schnittstelle starten

Beitrag von Stephan »

gerne auch mit Erläuterung warum deine Lösung nicht hilft. Also, OpenOffice mit Parametern zu starten zu starten hilft deshalb nicht, weil OO schon gestartet ist!
Ach so. Zwar dachte ich das Du es bist der fragt, aber anscheinend kennst Du ja OOo aus dem Handgelenk, so das ich mich hier nicht weiter einmischen möchte.

Weiterhin viel Spass im Forum.


Stephan

P.S.
Ich bin es leid hier ehremamtlich und unentgeldlich Antworten zu schreiben um dann noch zusätzlich darum zu betteln mir doch bitte Glauben zu schenken und das Gesagte zumindest einmal auszuprobieren.
Das mein Vorschlag natürlich auch bei bereits laufendem OOo keine zweite Instanz von OOo startet, sondern nur, wie gewünscht, ein bestimmtes Makro aufruft, erwähne ich hier nur der Vollständigkeit halber.
Auch mein nochmaliger Test (um mich selbst nochmals zu vergewissern) beispielhaft mittels VBA mit:

Code: Alles auswählen

Sub start_makro_in_OOo()
Parameter1 = "nur ein Test"
x = Shell("C:\Programme\OpenOffice.org 3\program\soffice.exe macro:///Standard.Module1.Makro1(Parameter1)", 1)
End Sub
bestätigt mir das.
Antworten