(Gelöst)automatischer Makrostart OOBasic beim Öffnen

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

Moderator: Moderatoren

Frank66
*
Beiträge: 11
Registriert: Mi, 05.03.2008 12:33
Wohnort: Bayern

(Gelöst)automatischer Makrostart OOBasic beim Öffnen

Beitrag von Frank66 »

Hallo,

ich möchte eine komplexere Anwendung entwickeln und habe dabei das Problem, dass ein OOBasic-Programm von aussen gestartet wird.
Makro soll aber nicht immer laufen, somit scheidet das Event "Programmstart" aus.
Habe auch keinen Startparameter dafür gefunden.
Ich habe mir so beholfen, eine bestimmte Datei zu öffnen, wo das Event "Dokument öffnen" mein Makro startet.
Soweit funktioniert es, aber leider scheint nicht die Initialisierung nicht wie gewünscht zu laufen. Es einen Unterschied macht, ob ich das Programm über mein Dokument starte oder das Makro über "Extras - Makros ausführen" starte.

die folgende Zeile brint beim automatischen Start die Fehlermeldung "Aktion wird nicht unterstützt. Ungültiger Prozeduraufruf"

Code: Alles auswählen

G_DLG = CreateUnoDialog(DialogLibraries.MeinProjekt.Dialog1)
beim manuellen Start funktioniert die Zeile tadellos.

Hat jemand ne Idee, wie ich da weiter komme?

Mir sind folgende Workarounds gekommen, scheitern nur an meiner Unkenntnis von OOBasic :(
- Starten eines Timers im Event "Dokument öffnen" und nach z.B. 100 Millisekunden ein Makro starten
- Autostart nicht über Dokument sondern Startparameter

Danke schon mal in Voraus für eventuelle Lösungsvorschläge

PS: Das Makro und der Dialog ist nicht direkt in dem Dokument wechsel zum Starten verwendet wird, sondern unter "Meine Makros" in einer Bibliothek.
Zuletzt geändert von Frank66 am Do, 13.03.2008 15:00, insgesamt 2-mal geändert.
Wie richtet man einen Betrieb zu Grunde?
mit Frauen - das ist am Schönsten
mit Spielen - das geht am Schnellsten
mit Computern - das ist am Sichersten
Die Steigerung sind dann die spielenden Frauen am Computer....
Frank66
*
Beiträge: 11
Registriert: Mi, 05.03.2008 12:33
Wohnort: Bayern

Re: automatischer Makrostart OOBasic beim Öffnen

Beitrag von Frank66 »

Habe inzwischen herausgefunden, dass der Fehler nur auftritt, wenn KEIN Schnellstarter aktiviert ist, muss als (leider) meinen Kunden den Schnellstarter aufzwingen.

Somit ist das Problem gelöst, oder zumindest eine Lösung die akzeptabel ist... schön ist es nicht.
Wie richtet man einen Betrieb zu Grunde?
mit Frauen - das ist am Schönsten
mit Spielen - das geht am Schnellsten
mit Computern - das ist am Sichersten
Die Steigerung sind dann die spielenden Frauen am Computer....
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: (Gelöst)automatischer Makrostart OOBasic beim Öffnen

Beitrag von Stephan »

Habe inzwischen herausgefunden, dass der Fehler nur auftritt, wenn KEIN Schnellstarter aktiviert ist
Na ob das wirklich stimmt bin ich jetzt nicht sicher

Ursache des Fehlers dürfte jedoch sein das Du den Dialog nicht aus der Standardbibliothek, sondern aus "MeinProjekt" startest und ich keinen Hinweis finde das Du diese Bibliothek vorher explizit laden würdest



Gruß
Stephan
hol.sten
******
Beiträge: 871
Registriert: Fr, 18.11.2005 21:21

Re: (Gelöst)automatischer Makrostart OOBasic beim Öffnen

Beitrag von hol.sten »

Frank66 hat geschrieben:Habe auch keinen Startparameter dafür gefunden.
Es gibt durchaus eine Möglichkeit, beim Starten von OpenOffice.org ein Macro ausführen zu lassen:

Code: Alles auswählen

"C:\Programme\OpenOffice.org 2.3\program\soffice.exe" "macro:///Standard.Test.Hinweis(Mein Hinweis)"
Das Makro wird gestartet und ausgeführt, unabhängig davon, ob OOo bereits läuft oder erst gestartet werden muss. In dem obigen Beispiel ist "Standard" der Name der Bibliothek (in meinem Beispiel ist es die Bibliothek Standard unter "My Macros & Dialogs"), "Test" der Name meines Moduls und "Hinweis" der Name meiner Subroutine, die ich wie folgt definiert habe "Sub Hinweis(meldung as string)". Wenn dein Macro keinen Parameter hat, lässt du die Klammern beim Aufrufen des Makros einfach weg.

Wenn du den Startbefehl in ein BAT-Datei packst, kannst du "Mein Hinweis" z. B. auch durch %1 ersetzen, um so den Makro-Aufrufparameter zusätzlich zu parametrisieren:

Code: Alles auswählen

rem OOo mit Macro starten
"C:\Programme\OpenOffice.org 2.3\program\soffice.exe" "macro:///Standard.Test.Hinweis(%1)"

pause
(Getestet mit OOo 2.3.1 und Windows XP)
Frank66
*
Beiträge: 11
Registriert: Mi, 05.03.2008 12:33
Wohnort: Bayern

Re: (Gelöst)automatischer Makrostart OOBasic beim Öffnen

Beitrag von Frank66 »

Hi Stefan,

die Bibliothek "MeinProjekt" war geladen, schließlich ist auch die betreffende Code-Zeile auch aus diesem Modul, hatte mir den Rest davor gespart, um nicht unnötig langen Code zu posten.
Stephan hat geschrieben:
Habe inzwischen herausgefunden, dass der Fehler nur auftritt, wenn KEIN Schnellstarter aktiviert ist
Na ob das wirklich stimmt bin ich jetzt nicht sicher

Ursache des Fehlers dürfte jedoch sein das Du den Dialog nicht aus der Standardbibliothek, sondern aus "MeinProjekt" startest und ich keinen Hinweis finde das Du diese Bibliothek vorher explizit laden würdest



Gruß
Stephan
Wie richtet man einen Betrieb zu Grunde?
mit Frauen - das ist am Schönsten
mit Spielen - das geht am Schnellsten
mit Computern - das ist am Sichersten
Die Steigerung sind dann die spielenden Frauen am Computer....
Frank66
*
Beiträge: 11
Registriert: Mi, 05.03.2008 12:33
Wohnort: Bayern

Re: (Gelöst)automatischer Makrostart OOBasic beim Öffnen

Beitrag von Frank66 »

hol.sten hat geschrieben:
Frank66 hat geschrieben:Habe auch keinen Startparameter dafür gefunden.
Es gibt durchaus eine Möglichkeit, beim Starten von OpenOffice.org ein Macro ausführen zu lassen:

Code: Alles auswählen

"C:\Programme\OpenOffice.org 2.3\program\soffice.exe" "macro:///Standard.Test.Hinweis(Mein Hinweis)"
Das Makro wird gestartet und ausgeführt, unabhängig davon, ob OOo bereits läuft oder erst gestartet werden muss. In dem obigen Beispiel ist "Standard" der Name der Bibliothek (in meinem Beispiel ist es die Bibliothek Standard unter "My Macros & Dialogs"), "Test" der Name meines Moduls und "Hinweis" der Name meiner Subroutine, die ich wie folgt definiert habe "Sub Hinweis(meldung as string)". Wenn dein Macro keinen Parameter hat, lässt du die Klammern beim Aufrufen des Makros einfach weg.

Wenn du den Startbefehl in ein BAT-Datei packst, kannst du "Mein Hinweis" z. B. auch durch %1 ersetzen, um so den Makro-Aufrufparameter zusätzlich zu parametrisieren:

Code: Alles auswählen

rem OOo mit Macro starten
"C:\Programme\OpenOffice.org 2.3\program\soffice.exe" "macro:///Standard.Test.Hinweis(%1)"

pause
(Getestet mit OOo 2.3.1 und Windows XP)
Hi hol.sten,

danke für die Anleitung der Startparameter, habe es entsprechend umgebaut. Rufe soffice.exe mit "Start" auf, damit die CMD nicht stehen bleibt und wartet. Leider tritt der Fehler mit dem DLG auch dort auf, aber wie schon geschrieben, komme ich mit dem Schnellstarter um das Problem herum.
Wie richtet man einen Betrieb zu Grunde?
mit Frauen - das ist am Schönsten
mit Spielen - das geht am Schnellsten
mit Computern - das ist am Sichersten
Die Steigerung sind dann die spielenden Frauen am Computer....
Frank66
*
Beiträge: 11
Registriert: Mi, 05.03.2008 12:33
Wohnort: Bayern

Re: (Gelöst)automatischer Makrostart OOBasic beim Öffnen

Beitrag von Frank66 »

So... jetzt aber die entgültige Lösung.....

Ich revidiere alle meine vorherigen Aussagen.... (peinlich)

Es war zwar ein loadlibrary drin, aber da hatte ich einen Tipfehler, den ich nicht bemerkte, da zu dem Zeitpunkt noch ein "on error resume next" aktiv war. Interessanterweise scheint es ohne den korrekten loadlibrary zu funktionieren, wenn der Schnellstarter drin ist, was ich mir eigentlich nicht erklären kann. Somit geht sowohl das Starten über mein Zwischendokument, als auch über die CMD mit dem Startparameter.

Danke erstmal allen für die Hilfe.... ich werde sicher in naher Zukunft noch öfters mal meine Problemchen anbringen, bin ja erst am Anfang meines Projektes.
Wie richtet man einen Betrieb zu Grunde?
mit Frauen - das ist am Schönsten
mit Spielen - das geht am Schnellsten
mit Computern - das ist am Sichersten
Die Steigerung sind dann die spielenden Frauen am Computer....
Antworten