Externe Makros aus anderem Dokument aufrufen
Moderator: Moderatoren
-
- Beiträge: 5
- Registriert: Do, 22.03.2007 12:52
Externe Makros aus anderem Dokument aufrufen
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
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
-
- *****
- Beiträge: 319
- Registriert: Mi, 14.12.2005 08:08
- Wohnort: freising - oder dort, wo das bier herkommt
Das kommt darauf an was Dein Ziel ist.Wie löse ich dieses Problem in OO Basic?
(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.
Mangels genauerer Informationen würde ich den in praktisch allen Fällen funktionierenden Weg gehen die Makros als Extension zu verteilen.Wer kann mir da weiterhelfen?
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
-
- Beiträge: 5
- Registriert: Do, 22.03.2007 12:52
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
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
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
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
-
- Beiträge: 5
- Registriert: Do, 22.03.2007 12:52
Hallo Stephan,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
ich verteile die Word-Vorlagen und die Makro-Vorlage gar nicht, da sie auf allgemein zugänglichen Netzpfaden liegen.
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:*auf dem Zielrechner mittels Extras-Packagemanager das gerade erstellte Package mittels Schaltfläche "Hinzufügen" installieren
Stephan
Das mit den Share-Verzeichnissen habe ich noch nicht verstande (bin blutiger AnfängerStephan 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

Anne_Marie
Und wie kommen sie dahin - durch das Wohlwollen Gottes?ich verteile die Word-Vorlagen und die Makro-Vorlage gar nicht, da sie auf allgemein zugänglichen Netzpfaden liegen
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.
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.Gibt es eine Möglichkeit die Installation des Package auf den Ziel-Rechnern zu automatisieren?
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
-
- Beiträge: 5
- Registriert: Do, 22.03.2007 12:52
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.
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
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
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Externe Makros aus anderem Dokument aufrufen
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)
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)