Wie mit Schaltfläche Makro einer anderen Datei starten?

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

Moderator: Moderatoren

steffn
***
Beiträge: 92
Registriert: So, 16.11.2008 15:02

Wie mit Schaltfläche Makro einer anderen Datei starten?

Beitrag von steffn »

Die Suche hier und über Google haben mir nicht geholfen:
Wie kann man duch Auslösen einer Schaltfläche ein Makro einer anderen Datei starten?
oo4.1.2 in winxp pro mit sp3
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Wie mit Schaltfläche Makro einer anderen Datei starten?

Beitrag von komma4 »

Schaltfläche: wo (Symbolleiste, Dialog, Formular)?

Makro der "anderen Datei": diese Datei geöffnet?

Prinzipiell: warum?
Allgemeingültige Makros sollten nicht in "fremden" Dateien versteckt werden... dort sollten sich nur dokumentenspezifische Makros "verstecken"


Welche OOo Version?
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)
steffn
***
Beiträge: 92
Registriert: So, 16.11.2008 15:02

Re: Wie mit Schaltfläche Makro einer anderen Datei starten?

Beitrag von steffn »

Schaltfläche im Formular.

Geöffnete andere Datei.

Ich weiß nicht, was allgemeingültige Makros sind und unterscheide Makros wahrscheinlich damit verbunden auch nicht. Ich habe alle dokumentspezifischen und dukumentübergreifenden Makros in einer Hauptdatei, die auch die anderen Dateien startet. Und aus einer der anderen Dateien möchte ich nun sehr gerne ein Makro der Hauptdatei starten.

OOO310m19 (Build:9420)
oo4.1.2 in winxp pro mit sp3
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Wie mit Schaltfläche Makro einer anderen Datei starten?

Beitrag von Stephan »

Ich weiß nicht, was allgemeingültige Makros sind und unterscheide Makros wahrscheinlich damit verbunden auch nicht.
Damit meint Winfried die Summe von Benutzer- und OOo-Makros.
Benutzermakros sind diejenigen Makros die im Benutzermakroverzeichnis gespeichert sind und im Dialog Extras-Makros-Makros verwalten-OPenOffice.org Basic im erscheinenden Dialog im Feld "Makros aus" unter "Meine Makros" stehen, OOo-Makros hingegen sind im 'zentralen' Makroverzeichnis gespeichert und im schon genannten Dialog unter "OpenOffice.org makros" aufgelistet.
Ich habe alle dokumentspezifischen und dukumentübergreifenden Makros in einer Hauptdatei, die auch die anderen Dateien startet.


Falls der Sinn des ganzen ist eine leichte Weitergabe der Makros in Anlehnung an das bei MS Office Übliche zu eerreichen beschreitest du einen sehr ungünstigen Weg, weil das bei OOo so nicht vorgesehen ist.
Makros die dokumentübergreifend arbeiten werden bei OOo (heutzutage) bevorzugt in Form sog. Extensions weitergegeben.

ZU der eigentlichen fRage weiß ich auch keine Lösung. Ich nehme aber an das es eine gibt, weil ich glaube mich zu erinnern sowas schon eimal gesehen zu haben.
Entweder dürfte es sich dabei um eine LÖsung handeln die sich an das Starten von zentralen Makros per Kommandozeile anlehnt, siehe:
viewtopic.php?f=2&t=31173&hilit=Kommandozeile#p124587

allerdings führen im internationalen Forum genannte Ausdrücke:

Code: Alles auswählen

soffice "C:\Dokumente und Einstellungen\Administrator\Desktop\mtest.ods macro://Standard.Module1.makrotest()"
(oder: ... macro:///...)

bei mir nicht zum Erfolg.
WEnn sich eine funktionierende Formulierung finden ließe wäre die Ausführung prinzipiell über eine temporäre Batsch-Datei oder über den Shell-Befehl möglich.

Oder die LÖsung, die ich glaube schon mal gesehen zu haben, ging über ein -accept (siehe obiger Link im Screenshot)



Gruß
Stephan
steffn
***
Beiträge: 92
Registriert: So, 16.11.2008 15:02

Re: Wie mit Schaltfläche Makro einer anderen Datei starten?

Beitrag von steffn »

Stephan hat geschrieben:
Ich weiß nicht, was allgemeingültige Makros sind und unterscheide Makros wahrscheinlich damit verbunden auch nicht.
Damit meint Winfried die Summe von Benutzer- und OOo-Makros.
Benutzermakros sind diejenigen Makros die im Benutzermakroverzeichnis gespeichert sind und im Dialog Extras-Makros-Makros verwalten-OPenOffice.org Basic im erscheinenden Dialog im Feld "Makros aus" unter "Meine Makros" stehen, OOo-Makros hingegen sind im 'zentralen' Makroverzeichnis gespeichert und im schon genannten Dialog unter "OpenOffice.org makros" aufgelistet.

Okay danke ... aber was bedeutet das für mich?
Soll ich die Makros einfach am anderen Ort speichern, dann wird mein Problem kein Problem mehr?
Stephan hat geschrieben:
Ich habe alle dokumentspezifischen und dukumentübergreifenden Makros in einer Hauptdatei, die auch die anderen Dateien startet.

Falls der Sinn des ganzen ist eine leichte Weitergabe der Makros in Anlehnung an das bei MS Office Übliche zu erreichen beschreitest du einen sehr ungünstigen Weg, weil das bei OOo so nicht vorgesehen ist.
Makros die dokumentübergreifend arbeiten werden bei OOo (heutzutage) bevorzugt in Form sog. Extensions weitergegeben.
Ich kenne das "MS Office Übliche" nicht und ich habe auch noch nie eine Extension erstellt.
Was ist mit "Weitergabe"/"weitergegeben" gemeint?
Wenn ich die Makros in einer Extension speichere, verschwindet dann mein Problem?

Spontan fällt mir nur ein "thiscomponent" ein, dass die Makros zur Zeit an die Hauptdatei bindet. Ansonsten ist eigentlich alles so neutral, dass es egal ist, wo der Code sich befindet.
oo4.1.2 in winxp pro mit sp3
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Wie mit Schaltfläche Makro einer anderen Datei starten?

Beitrag von komma4 »

Ja, so siehst aus.

Erstelle eine Bibliothek "foo" und packe Deine Makros da rein.
Exportiere die Bibliothek als Extension (Basic-Makros verwalten>Bibliotheken>Export...)

Nun sorgst Du vor einer Makroausführung noch, dass diese Bibliothek geladen ist

Code: Alles auswählen

If NOT Globalscope.BasicLibraries.isLibraryLoaded( "foo" ) Then
   Globalscope.BasicLibraries.loadLibrary( "foo" )
End If
...und schon kann jedes Makro darin aufgerufen werden (durch seinen Namen)
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)
Antworten