Seite 1 von 1
[gelöst] Makro aus Datei in Bibliothek verschieben
Verfasst: Mo 16. Mai 2022, 18:26
von fbarc
Hi,
ich habe mehrere Dateien mit vielen Makroteilen.
Da die Makros immer die gleichen sind, habe ich nun eine Bibliothek gemacht und aus einer Datei da alles reinkopiert.
Die 2. Datei soll nun auch auf die Bibliothek zugreifen und nicht mehr auf die "internen" Dateimakros.
Ich habe alle Makros aus der Datei gelöscht, aber nun werden die Makros nicht mehr gefunden.
Ich muß alle Schaltflächen manuell angehen und die Bibliothekenmakros auswählen.
Gibt es da keine Möglichkeit das "in einem Rutsch" irgendwie zumzuziehen??
Gruß
Fabi
Re: Makro aus Datei in Bibliothek verschieben
Verfasst: Mo 16. Mai 2022, 18:55
von craig
Hallo Fabi,
ich gehe davon aus, dass Du eine neue Bibliothek unter "Meine Makros & Dialoge" gespeichert hast.
Damit Du einen globalen Zugriff auf Deine benutzerdefinierte Bibliothek
erhälst, muss die Bibliothek beim Officestart geladen werden.
- Bei mir habe ich unter "Meine Makros & Dialoge\Standard" ein Modul gespeichert,
welches die erforderlichen Bibliotheken lädt.
- Name des Moduls z.B. modLoadLib
- Der Code zum Laden:
Code: Alles auswählen
REM ***** BASIC *****
Sub LoadingLibraries
GlobalScope.BasicLibraries.LoadLibrary("MeineLib")
' https://wiki.openoffice.org/wiki/DE/Makro_Basic_Tutorial#X-Ray_tool
' GlobalScope.BasicLibraries.LoadLibrary("XrayTool")
REM usw.
End Sub
- Nun fehlt noch ein Ereignis zum Laden
- Menü Extras → Anpassen...
- Register "Ereignisse"
- Unterhalb der Listbox "Speichern in:" LibreOffice auswählen
- Dann in der Listbox das Ereignis Programmstart markieren.
- Button "Makro" betätigen und o.g. Makro zuweisen.
- LibreOffice neustarten
weitere Info's findest Du hier:
https://wiki.openoffice.org/wiki/Docume ... from_Basic
Re: Makro aus Datei in Bibliothek verschieben
Verfasst: Di 17. Mai 2022, 02:44
von gogo
1. Welches Betriebssystem hast Du?
2. kannst Du mit sed umgehen?
Re: Makro aus Datei in Bibliothek verschieben
Verfasst: Di 17. Mai 2022, 08:45
von karolus
gogo hat geschrieben: ↑Di 17. Mai 2022, 02:44
1. Welches Betriebssystem hast Du?
2. kannst Du mit sed umgehen?
Du schlägst ernsthaft vor per sed in …xml-dateien rumzuwursteln, um (und anderem ) auch noch Schaltflächenzuordnungen anzupassen??
Re: Makro aus Datei in Bibliothek verschieben
Verfasst: Di 17. Mai 2022, 10:11
von gogo
jep - funktioniert, und bietet sich für _einmaliges_ Umorganisieren an. Hab' ich schon ein paar mal gemacht, auch für große ODBs (>6MB) mit dutzenden Formularen. Es müssen im Wesentlichen nur die Bibliotheks und Modulnamen geändert werden. Ein Link sieht etwa so aus:
Code: Alles auswählen
<script:event-listener
script:language="ooo:script"
script:event-name="form:performaction"
xlink:href="vnd.sun.star.script:MainExtension.MyTools.UeberschriftFormatieren?language=Basic&location=application"
xlink:type="simple"/>
Ein anderes Makro wird verlinkt wenn "MainExtension.MyTools.UeberschriftFormatieren" entsprechend ersetzt wird. Ist uU wesentlich einfacher als hunderte Buttons "umzuklicken", denn meist wird ja nicht der Makroname, sondern nur Bibliothek und Modul verändert.
Geht natürlich auch über einen Editor, aber content.xml ist einzeilig und die meisten 08/15 Editoren haben damit Probleme.
Re: Makro aus Datei in Bibliothek verschieben
Verfasst: Di 17. Mai 2022, 13:34
von fbarc
gogo hat geschrieben: ↑Di 17. Mai 2022, 02:44
1. Welches Betriebssystem hast Du?
Das beste System der Welt

Linux
gogo hat geschrieben: ↑Di 17. Mai 2022, 02:44
2. kannst Du mit sed umgehen?
sollte ich hinbekommen
gogo hat geschrieben: ↑Di 17. Mai 2022, 10:11
jep - funktioniert, und bietet sich für _einmaliges_ Umorganisieren an. Hab' ich schon ein paar mal gemacht, auch für große ODBs (>6MB) mit dutzenden Formularen. Es müssen im Wesentlichen nur die Bibliotheks und Modulnamen geändert werden. Ein Link sieht etwa so aus:
Code: Alles auswählen
<script:event-listener script:language="ooo:script" script:event-name="form:performaction" xlink:href="vnd.sun.star.script:MainExtension.MyTools.UeberschriftFormatieren?language=Basic&location=application" xlink:type="simple"/>
Ein anderes Makro wird verlinkt wenn "MainExtension.MyTools.UeberschriftFormatieren" entsprechend ersetzt wird. Ist uU wesentlich einfacher als hunderte Buttons "umzuklicken", denn meist wird ja nicht der Makroname, sondern nur Bibliothek und Modul verändert.
Geht natürlich auch über einen Editor, aber content.xml ist einzeilig und die meisten 08/15 Editoren haben damit Probleme.
Wie komme ich an diese XML-Datei ran??
Re: Makro aus Datei in Bibliothek verschieben
Verfasst: Di 17. Mai 2022, 14:27
von gogo
1.: Sicherheitskopie!
2.: überprüfe Punkt 1!
3.: damit Du ein Template hast: einen oder mehrere Buttons so umstellen, dass er mit der neuen Bibliothek/Modul-Struktur funktioniert.
4.: Die odb die Du verwendest entpacken (LO-Dateien sind einfache zip-Archive). In der Regel reicht es, wenn Du das im Dateimanager mit dem Kontextmenü machst: "entpacken" oder "entpacken und Unterordner selbstständig ermitteln" ...
Im Grundverzeichnis gibt's dann eine Datei namens "content.xml" ...
oder einfach mit folgendem Befehl die content.xml rausholen:
5. in dieser Datei dann mal nach dem umgestellten Link suchen (geht einfach mit dem neuen Bibliotheksnamen) und ein paar umzustellende Vorkommen suchen - entsprechend ersetzen und dann
6.: alles wieder zurückpacken. Geht auch mit einem Update (DateiXYZ.odb und content.xml müssen sich im aktuellen Verzeichnis befinden):
Wenn die Ersetzerei komplexer ist, dann in der content.xml am einfachsten mit sed ersetzen. Einmal druchrauschen lassen und ggf. im Terminal kontrollieren. Eine Datei direkt umschreiben kann man mit sed dann am leichtesten mit der Option -i ("in place"). Da gibt's auch eine einfache Backup-Option z.B. "sed s/"Peter"/"Petra"/g -i.backup adressen.txt"
Re: Makro aus Datei in Bibliothek verschieben
Verfasst: Mi 18. Mai 2022, 02:46
von fbarc
@gogo
Vielen Dank... das war, was ich gebraucht hatte
Damit bin ich weitergekommen...