Externe Makros aus anderem Dokument aufrufen

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

Moderator: Moderatoren

Anne_Marie
Beiträge: 5
Registriert: Do, 22.03.2007 12:52

Externe Makros aus anderem Dokument aufrufen

Beitrag von Anne_Marie »

Hallo,
ich habe bisher kaum Erfahrung in OO Basic und muss jetzt MS Wordvorlagen mit VBA-Makros auf OO Basic umstellen.
Jetzt stehe ich vor folgendem Problem:
Meine verschiedenen Wordvorlagen benutzen alle generelle Makros, die in einer anderen Vorlage (genannt Makro-Vorlage) gespeichert sind.
Diese Vorlage habe ich im AutoStart-Ordner (Extras / Optionen /Dateiablage /Autostart) gepeichert. Beim Öffnen von Word stand sie damit allen Vorlagen und Usern zur Verfügung.
Wie löse ich dieses Problem in OO Basic?
Ich habe es versucht, indem ich in OO ebenfalls eine Makro-Vorlage erstellt habe und diese vom originalen Dokument aus versteckt geladen habe ( StarDesktop.loadComponentFromURL).
Leider weiß ich jedoch nicht, wie man ein Makro aus dieser geladenen Vorlage aufruft.
Folgender Aufruf hat nicht funktioniert:
OFH_Makros.Standard.Adresse.AdressDlg()
(--> Makro-Vorlage.Standard.Modul.Funktion)
Fehlermeldung: Basic Laufzeitfehler Objektvariable nicht belegt.

Wer kann mir da weiterhelfen?

Anne-Marie
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Beitrag von kannenklaus »

hallo anne-marie

schau mal hier:

http://www.starbasicfaq.de/WiekannmanMa ... kenau.html

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

Beitrag von Stephan »

Wie löse ich dieses Problem in OO Basic?
Das kommt darauf an was Dein Ziel ist.

(naja, Makros ausführen ist klar, nicht klar ist jedoch warum Du in Word den beschriebenen Weg gewählt hast, das kann Zufall sein oder es kann konkrete Gründe geben, denn das Ganze ginge ja auch in Word anders)
Leider weiß ich jedoch nicht, wie man ein Makro aus dieser geladenen Vorlage aufruft.


Wenn ich das Problem richtig verstehe, so garnicht, weil Du nicht Makros aus einem Dokument aufrufen kannst, wenn das nicht aus dem Dokument heraus geschieht.
Wer kann mir da weiterhelfen?
Mangels genauerer Informationen würde ich den in praktisch allen Fällen funktionierenden Weg gehen die Makros als Extension zu verteilen.

1. es gibt andere Wege, nur ohne genauere Info ist nicht zu entscheiden ob das besser wäre
2. das Untenstehende gilt im Konkreten erst ab OOo 2.0.x (vorher ging es anders bzw. mußte anders gemacht werden)


Somit:
*lege eine Bibliothek unter "Meine Makros" an
(Extras-Makros-Makros verwalten ... Schaltfläche "Verwalten" -->Register "Bibliotheken", Schaltfläche "Neu")

*lege in dieser Bibliothek ein oder mehrere Module an und speichere die Makros darin

*exportiere alle Makros in ein sog. Package (neumodisch heißt das nicht mehr Package sondern Extension)
(Extras-Makros-Makros verwalten ... Schaltfläche "Verwalten" -->Register "Bibliotheken", gewünschte Bibliothek markieren und Schaltfläche "Export", im erscheinenden Dialog "Package" wählen)

*auf dem Zielrechner mittels Extras-Packagemanager das gerade erstellte Package mittels Schaltfläche "Hinzufügen" installieren


Willst Du nun von anderen Makros auf Makros in der gerade hinzugefügten Bibliothek zugreifen, dürfte es nötig sein, diese erst in den anderen Makros mit:

.LoadLibrary()

zu laden.

Hinweise dazu beispielsweise in der OOo-Programmhilfe.



Gruß
Stephan
Anne_Marie
Beiträge: 5
Registriert: Do, 22.03.2007 12:52

Beitrag von Anne_Marie »

Hallo Stephan,
ich habe diesen Weg gewählt, da ich die generellen Makros z. B. Adress-Dialog in vielen verschiedenen Vorlagen brauche und viele User diese Vorlagen verwenden.
Und da ich immer mal wieder die generellen Makros ändern muss, spare ich mir durch diesen Weg das Verteilen der geänderten Makros an die einzelnen Clients. Den Usern stehen immer automatisch die geänderten Makros zur Verfügung.

Zu Deiner Lösung mit Extension:
Wenn ich Dich richtig verstanden habe, muss ich auf jedem Rechner einzeln die Extension installieren oder geht das irgendwie automatisch?

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

Beitrag von Stephan »

Ich weiß nicht genau was hier "jeder Rechner einzeln" meint, im Prinzip mußt Du sie an alle Rechner verteilen an die Du heute auch verteilst. Und je nachdem wie Du heute die Vorlagen verteilst, also entweder durch automatisches Kopieren (beispielsweise mit Script) bzw. durch händisches Kopieren ist das eben 'automatisch' oder nicht, und gleiches bei OOo.
Die Umsetzung im Detail unterscheidet sich halt, weil es beispielsweise den Ordner Extras / Optionen /Dateiablage /Autostart bei OOo nicht gibt und Du je nach Lage entweder /share/basic im Programmverzeichnis oder /basic im User-Verzeichnis oder /share/uno_packages oder /uno-packages im Userverzeichnis oder spezielle Ordner die Du dafür administrativ eingerichtet hast verwenden mußt.


Gruß
Stephan
Anne_Marie
Beiträge: 5
Registriert: Do, 22.03.2007 12:52

Beitrag von Anne_Marie »

Stephan hat geschrieben:Ich weiß nicht genau was hier "jeder Rechner einzeln" meint, im Prinzip mußt Du sie an alle Rechner verteilen an die Du heute auch verteilst.
Stephan
Hallo Stephan,
ich verteile die Word-Vorlagen und die Makro-Vorlage gar nicht, da sie auf allgemein zugänglichen Netzpfaden liegen.
Stephan hat geschrieben:*auf dem Zielrechner mittels Extras-Packagemanager das gerade erstellte Package mittels Schaltfläche "Hinzufügen" installieren
Stephan
Gibt es eine Möglichkeit die Installation des Package auf den Ziel-Rechnern zu automatisieren? Wir haben ca. 50 User und ich will nicht zu jedem einzelnen Rechner, um die Installation durchzuführen.
Stephan hat geschrieben:*Die Umsetzung im Detail unterscheidet sich halt, weil es beispielsweise den Ordner Extras / Optionen /Dateiablage /Autostart bei OOo nicht gibt und Du je nach Lage entweder /share/basic im Programmverzeichnis oder /basic im User-Verzeichnis oder /share/uno_packages oder /uno-packages im Userverzeichnis oder spezielle Ordner die Du dafür administrativ eingerichtet hast verwenden mußt.
Stephan
Das mit den Share-Verzeichnissen habe ich noch nicht verstande (bin blutiger Anfänger :oops: ), was lege ich wo ab?

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

Beitrag von Stephan »

ich verteile die Word-Vorlagen und die Makro-Vorlage gar nicht, da sie auf allgemein zugänglichen Netzpfaden liegen
Und wie kommen sie dahin - durch das Wohlwollen Gottes?
Ich nehme mal an das sie jemand dorthin kopiert (per ftp überträgt o.Ä.) und dieser Prozess heißt nunmal "verteilen", ich habe mir den Begriff nicht ausgedacht.
Gibt es eine Möglichkeit die Installation des Package auf den Ziel-Rechnern zu automatisieren?
Das geht mittels dem Packagemanager (unopkg.exe im Programmverzeichnis von OOo), nötige Hinweise zu Parametern bekommst Du indem Du unopkg.exe über die Kommandozeile startest.
Das mit den Share-Verzeichnissen habe ich noch nicht verstande


'share' (bzw. dortige Unterverzeichnisse) ist das vordefinierte Verzeichnis zur Ablage von Makros, Dokumentvorlagen, etc. welche für alle user-accounts Gültigkeit haben. Per Standard ist share in <installationsverzeichnis von OOo>/share/



Gruß
Stephan
Anne_Marie
Beiträge: 5
Registriert: Do, 22.03.2007 12:52

Beitrag von Anne_Marie »

Guten Morgen Stephan,
erst mal danke für Deine Geduld.
Also unter Verteilen verstehe ich, etwas an verschiedene Stellen (Pc's, Verzeichnisse) zu kopieren. Bei mir gibt es nur eine Stelle (Server), wo ich die Vorlagen und die Makros verwalte. Auf diesen Server-Pfad greifen alle User zu. D. h. ich verteile nix.
'share' (bzw. dortige Unterverzeichnisse) ist das vordefinierte Verzeichnis zur Ablage von Makros, Dokumentvorlagen, etc. welche für alle user-accounts Gültigkeit haben. Per Standard ist share in <installationsverzeichnis von OOo>/share/

Habe ich das jetzt richtig verstanden?
Das vordefinierte Verzeichnis für die Vorlagen stelle ich unter Extras / Optionen / Office.org / Pfade / Dokumentvorlagen ein. Hier kann ich bestimmt auch ein Verzeichnis auf dem Server einstellen (wie seither bei Word).
Die Makros werden entweder unter einem User-Account (Meine Makros) bzw. User-übergreifend (OpenOffice.org) lokal auf dem PC gespeichert.
Hier kann ich also wahrscheinlich kein Server-Laufwerk verwenden?
Um Makro-Änderungen jedem User zugänglich zu machen, muss ich Extensions erzeugen, die per Skript (mit unopkg.exe) auf jedem PC automatisch importiert werden.

Anne-Marie
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Externe Makros aus anderem Dokument aufrufen

Beitrag von komma4 »

mmpf
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