🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Modulübergreifendes Macro

Alles zur Programmierung im LibreOffice.
Antworten
SigurdF
Beiträge: 16
Registriert: Mi 27. Jun 2012, 15:04
Wohnort: Germany

Modulübergreifendes Macro

Beitrag von SigurdF » Mi 27. Jun 2012, 15:20

Hallo,
Ich möchte mir eine einfache Adress-Datenbank aufbauen und die Daten auch in Vorlagen einfügen. Ich beginne also im Writer mit der standardmässig geöffneten Seite "Untitled 1". Hier starte ich das Macro mit dem ersten Dialog, um die Vorlage auszuwählen. Einige Vorlagen benötigen Adressen, welche nun in Calc abgefragt werden, um dann in die Vorlage eingefügt zu werden.
Ich habe beide Teile separat hergestellt. Der Teil in Writer und der Datenbankteil in Calc arbeiten jeweils einwandfrei. Wenn nun mit dem Start in Writer die Seite "Untitled 1" geöffnet ist und ich öffne manuell die Calc-Datei mit den Datenbank-Daten, dann sind beide Dateien in der Taskleiste sofort verfügbar. Ich kann hin- und herspringen. So möchte ich es auch im Macro haben. Doch, wenn ich im Macro die Calc-Datei öffne, wird sofort die Writer-Datei "Untitled 1" geschlossen.
Dateiname = "file:///home/sigurd/LibreOffice/LibO_Calc/DataBase/Adressen.ods"
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "URL"
args6(0).Value = Dateiname
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:Open", "", 0, args6())


Wenn dann das Macro wieder zu Writer zurückkehren soll, die Vorlage aufrufen soll und die entsprechenden Einfügungen machen soll, geht das nicht.
Wie kann ich das Problem lösen?

komma4
Beiträge: 185
Registriert: Sa 13. Aug 2011, 10:01
Wohnort: Chonburi Thailand Asia
Kontaktdaten:

Re: Modulübergreifendes Macro

Beitrag von komma4 » Fr 29. Jun 2012, 19:34

Willkommen im Forum.

Mein Tipp: arbeite nicht mit dispatcher-Befehlen.

Mit folgendem Code öffnest Du Deine Calc-Datei und anschliessend ein neues Writer-Dokument (aus der Standardvorlage)

Code: Alles auswählen

oDeskNeu = createUnoService( "com.sun.star.frame.Desktop" )
sDateiname = "file:///home/sigurd/LibreOffice/LibO_Calc/DataBase/Adressen.ods"
oCalcDok = oDeskNeu.loadComponentFromURL( sDateiname, "_blank", 0, Array() )


sNeuURL = "private:factory/swriter"
oWriterDok = oDeskNeu.loadComponentFromURL( sNeuURL, "_blank", 0, Array() )
Nun kannst Du beide Dateien über deren Objektnamen ansprechen.


Einführende Literatur zur StarBasic-Programmierung:

Andrews Makro-Dokument
StarBasic FAQ

Objekt-Inspektions-Tools
XRAY
MRI


Viel Erfolg!
Cheers
Winfried
aktuell: openSuse 13.1 mit LO 4.3.7.2
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als Extension)

SigurdF
Beiträge: 16
Registriert: Mi 27. Jun 2012, 15:04
Wohnort: Germany

Re: Modulübergreifendes Macro SOLVED

Beitrag von SigurdF » Mi 4. Jul 2012, 14:53

Hallo komma4,
es tut mir leid, dass ich erst heute wieder hier hereinschaue. Ich hatte Probleme mit einem neu gekauften Drucker-Scanner von Canon. Die Linuxtreiber, welche Canon anbietet, sind veraltet. Der Scanner-Treiber funktioniert nicht. Und Canon übernimmt keinerlei Support - extrem schlecht!!! Sie sollten auf ihrer Webseite wenigstens dazuschreiben, dass die Nutzung der Linux-Treiber auf eingene Gefahr ist. Unter Mithilfe des Ubuntu-Forums habe ich eine Seite gefunden, auf der die neuesten Scanner- und Drucker-Treiber für Canon-Geräte bereitgestellt sind. Und alles funktioniert! Das nur nebenbei.

Bei Andrew Pitonyak habe ich gefunden, dass das Öffnen und Schliessen von Dateien durch ein Macro anders behandelt wird als der manuelle Befehl im Modul. Ich ging davon aus, dass (wie bei den manuellen Befehlen im Modul) die Textdatei bestehen bleibt, obwohl ich eine Calc-Datei aufrufe und umgekehrt. Doch beim Aufruf einer Calc-Datei durch das Macro wird eine jede Textdatei automatisch geschlossen. Ich hatte nun nach Beendigung der Datenbank-Funktion im Calc-Modul die Calc-Datei mittels Macrobefehl geschlossen, da ich annahm, dass die Textdatei immer noch da ist. Doch nun ist keine Datei mehr da und das Macro stoppt. Ich habe einfach den Befehl zum Schliessen der Calc-Datei gelöscht, da die Calc-Datei beim Aufruf einer Textdatei vom Macro automatisch geschlossen wird. Und schon funktioniert alles!

Mich würde aber doch interessieren, warum ich keine Dispatcher-Befehle verwenden soll. Ich war immer der Ansicht, dass das UNO-Konzept die Weiterentwicklung ist. Liege ich da falsch?
#
Danke für die Hinweise,
Sigurd

komma4
Beiträge: 185
Registriert: Sa 13. Aug 2011, 10:01
Wohnort: Chonburi Thailand Asia
Kontaktdaten:

Re: Modulübergreifendes Macro SOLVED

Beitrag von komma4 » Do 5. Jul 2012, 21:41

SigurdF hat geschrieben:warum ich keine Dispatcher-Befehle verwenden soll
dispatcher ist unglaublich schlecht dokumentiert und wird IMHO nicht weiter entwickelt.
Cheers
Winfried
aktuell: openSuse 13.1 mit LO 4.3.7.2
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als Extension)


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten