[gelöst] Vorlagenpfad(e) mit Basic ändern
Verfasst: So, 06.02.2011 03:27
Meine Frage ist ziemlich lang, weil ich schon einiges ausprobiert habe, aber an einem bestimmten Punkt nicht weiterkomme.
Hinweis: OOo-Version 3.2.1, Betriebssystem Windows XP.
Ich möchte mit einem Basic-Makro den Standardpfad für Formatvorlagen ändern, wie es ein Benutzer in der OOo-GUI mit der Befehlsfolge >Extras >Optionen >OpenOffice.org >Pfade >Dokumentvorlagen tun kann.
Da kann man (im laufenden Betrieb) Pfade löschen, hinzufügen und einen von mehren Pfaden als Standardpfad auswählen.
Der Service com:sun
util:PathSettings scheint für die Aufgabe geeignet zu sein, verhält sich allerdings etwas seltsam.
Was ich im laufenden Betrieb mit Basic nicht hinbekomme:
(1) Einen schon registrierten Pfad als Standardpfad einstellen, ohne dass er mehrfach in der Pfadauswahl auftaucht.
(2) Einen (falschen/veralteten) Pfad löschen, um ihn durch einen neuen (richtigen) Pfad zu ersetzen.
Einiges funktioniert ganz gut, sofern nicht (1) oder (2) auftritt:
(a) Standardpfad in Basic ändern ...… funktioniert.
Template_writable ist der Pfad, den man bei eventuell mehreren Pfaden in der GUI als Standardpfad anklicken kann (Radiobutton links neben dem Pfadnamen).
Möglicherweise sollte der 'alte' Standardpfad erhalten bleiben, weil man irgendwann später wieder hauptsächlich mit den dort gespeicherten Vorlagen arbeitet.
(b) Standardpfad ändern und alten Pfad erhalten ...… sieht dann in der GUI zB. so aus:
( ) E:\Projekte\A15\Konstruktion\Doku\Formulare
(X) D:\ Spezialvorlagen
Soweit alles Ok.
(c) Der 'gerettete' Pfad soll wieder Standardpfad sein ...… bewirkt nun dieses:
( ) E:\Projekte\A15\Konstruktion\Doku\Formulare
(X) E:\Projekte\A15\Konstruktion\Doku\Formulare
… oder bei Verfahren (b):
( ) E:\Projekte\A15\Konstruktion\Doku\Formulare
( ) D:\ Spezialvorlagen
(X) E:\Projekte\A15\Konstruktion\Doku\Formulare
Wie entferne ich den überflüssigen Eintrag E:\Projekte... ?funktioniert nicht !!
Anmerkung #1:
Template_user() ist ein Array mit allen benutzerdefinierten Vorlagenpfaden außer dem eingestellten Standardpfad.
Die benutzerdefinierten Pfade kann man zB. so anzeigen...… aber nicht ändern.
oPfade.Template_user(0) = "Quatsch" erzeugt keinen Fehler, sondern macht einfach nichts.
Nun kann man die Datei Paths.xcu direkt ändern. Das möchte ich eigentlich nicht, weil zum einen die Änderungen erst wirken, wenn man alle Office-Anwendungen und den Schnellstarter beendet hat und weil es irgendeinen Service geben muß, der über >Extras >Optionen >OpenOffice.org >Pfade ausgeführt wird.
- - Es wäre toll, wenn mir jemand im Forum eine Anregung geben kann! - -
Jetzt noch ein Tipp zu folgender Frage:
Wie komme ich an den Standardpfad für Vorlagen, der typischerweise bei der Installation eingerichtet wird ? Ist hier im Forum - glaube ich - auch schon mal thematisiert worden.
Ich bevorzuge den nachstehenden Code, der im Gegensatz zu einer Reihe anderer Vorschläge, die im Web kursieren, unabhängig vom Betriebssystem ist:
Um andere benutzerbezogene Standardpfade zu ermitteln einfach "/template" durch den passenden Ordnernamen ersetzen, zB. "/autotext" für Textbausteine.
Abschließend noch eine Anmerkung zu den Codeschnippseln vom Anfang:
Nicht wundern, wenn man .Template ausliest. Da erhält man etwa folgenden Bandwurmstring:
"file:///C:/Programme/OpenOffice.org%203/Basis/share/template/de;vnd.sun.star.expand:$UNO_USER_PACKAGES_CACHE/uno_packages/4.tmp_/TemplatePackage.oxt/template;file:///C:/Dokumente%20und%20Einstellungen/katzenmann/Anwendungsdaten/OpenOffice.org/3/user/template;file:///D:/Spezialvorlagen".
Das ist eine Aneinanderreihung aller in OOo irgendwo registrierten Vorlagenpfade.
Die Beschreibungen bei http://api.openoffice.org/docs/common/r ... tings.html oder http://wiki.services.openoffice.org/wik ... h_Settings
sind für mich nicht wirklich erhellend.
Dank Xray-Tools konnte ich sehen, dass der PathSettings-Service gleich mehrere Properties für Vorlagen bietet, die miteinander zusammenhängen. Die Properties heißen:
1) Template (als Multipath-String) <= alle registrierten Pfade
2) Template_user (String-Array) <= benutzerdefinierte Pfade
3) Template_internal (String-Array) <= interne Pfade
4) Template_writable (Singlepath-String) <= Standardpfad
(1) liefert die Zusammenfassung von (2) bis (4). Beim Schreiben wird ein angegebener Pfad bei (2) eingegliedert, sofern er dort noch nicht vorhanden ist.
Tolles Forum! - Und vielleicht weiß jemand Rat?
Gruß an alle von katzenmann
Hinweis: OOo-Version 3.2.1, Betriebssystem Windows XP.
Ich möchte mit einem Basic-Makro den Standardpfad für Formatvorlagen ändern, wie es ein Benutzer in der OOo-GUI mit der Befehlsfolge >Extras >Optionen >OpenOffice.org >Pfade >Dokumentvorlagen tun kann.
Da kann man (im laufenden Betrieb) Pfade löschen, hinzufügen und einen von mehren Pfaden als Standardpfad auswählen.
Der Service com:sun
Was ich im laufenden Betrieb mit Basic nicht hinbekomme:
(1) Einen schon registrierten Pfad als Standardpfad einstellen, ohne dass er mehrfach in der Pfadauswahl auftaucht.
(2) Einen (falschen/veralteten) Pfad löschen, um ihn durch einen neuen (richtigen) Pfad zu ersetzen.
Einiges funktioniert ganz gut, sofern nicht (1) oder (2) auftritt:
(a) Standardpfad in Basic ändern ...
Code: Alles auswählen
Dim oPfade as object
oPfade = createUnoService("com.sun.star.util.PathSettings")
oPfade.Template_writable = ConvertToUrl("D:\Spezialvorlagen")
Template_writable ist der Pfad, den man bei eventuell mehreren Pfaden in der GUI als Standardpfad anklicken kann (Radiobutton links neben dem Pfadnamen).
Möglicherweise sollte der 'alte' Standardpfad erhalten bleiben, weil man irgendwann später wieder hauptsächlich mit den dort gespeicherten Vorlagen arbeitet.
(b) Standardpfad ändern und alten Pfad erhalten ...
Code: Alles auswählen
Dim oPfade as object
Dim sAlt as string
oPfade = createUnoService("com.sun.star.util.PathSettings")
'-- alten Pfad merken
sAlt = oPfade.Template_writable
'– neuen Pfad setzen
oPfade.Template_writable = ConvertToUrl("D:\Spezialvorlagen")
'-- alten Pfad in die Liste der Vorlagenpfade eintragen
oPfade.Template = sAlt
( ) E:\Projekte\A15\Konstruktion\Doku\Formulare
(X) D:\ Spezialvorlagen
Soweit alles Ok.
(c) Der 'gerettete' Pfad soll wieder Standardpfad sein ...
Code: Alles auswählen
oPfade.Template_writable = oPfade.Template_user(0) 'siehe #1
( ) E:\Projekte\A15\Konstruktion\Doku\Formulare
(X) E:\Projekte\A15\Konstruktion\Doku\Formulare
… oder bei Verfahren (b):
( ) E:\Projekte\A15\Konstruktion\Doku\Formulare
( ) D:\ Spezialvorlagen
(X) E:\Projekte\A15\Konstruktion\Doku\Formulare
Wie entferne ich den überflüssigen Eintrag E:\Projekte... ?
Code: Alles auswählen
sAlt = oPfade.Template_writable
oPfade.Template_writable = oPfade.Template_user(0)
oPfade.Template_user(0) = sAlt
Anmerkung #1:
Template_user() ist ein Array mit allen benutzerdefinierten Vorlagenpfaden außer dem eingestellten Standardpfad.
Die benutzerdefinierten Pfade kann man zB. so anzeigen...
Code: Alles auswählen
for i = LBound(oPfade.Template_user()) to UBound(oPfade.Template_user())
MsgBox oPfade.Template_user(i)
next
oPfade.Template_user(0) = "Quatsch" erzeugt keinen Fehler, sondern macht einfach nichts.
Nun kann man die Datei Paths.xcu direkt ändern. Das möchte ich eigentlich nicht, weil zum einen die Änderungen erst wirken, wenn man alle Office-Anwendungen und den Schnellstarter beendet hat und weil es irgendeinen Service geben muß, der über >Extras >Optionen >OpenOffice.org >Pfade ausgeführt wird.
- - Es wäre toll, wenn mir jemand im Forum eine Anregung geben kann! - -
Jetzt noch ein Tipp zu folgender Frage:
Wie komme ich an den Standardpfad für Vorlagen, der typischerweise bei der Installation eingerichtet wird ? Ist hier im Forum - glaube ich - auch schon mal thematisiert worden.
Ich bevorzuge den nachstehenden Code, der im Gegensatz zu einer Reihe anderer Vorschläge, die im Web kursieren, unabhängig vom Betriebssystem ist:
Code: Alles auswählen
Function Standardvorlagenpfad() as string
Dim oPfadSubst as object
oPfadSubst = createUnoService("com.sun.star.util.PathSubstitution")
Standardvorlagenpfad = oPfadSubst.getSubstituteVariableValue("user") + "/template"
End Function
'... Irgendwo anders im Code …
'-- Anzeige in URL-Notation
MsgBox Standardvorlagenpfad()
'-- Anzeige gem. verwendetem Betriebssystem
MsgBox ConvertFromUrl( Standardvorlagenpfad() )
Abschließend noch eine Anmerkung zu den Codeschnippseln vom Anfang:
Nicht wundern, wenn man .Template ausliest. Da erhält man etwa folgenden Bandwurmstring:
"file:///C:/Programme/OpenOffice.org%203/Basis/share/template/de;vnd.sun.star.expand:$UNO_USER_PACKAGES_CACHE/uno_packages/4.tmp_/TemplatePackage.oxt/template;file:///C:/Dokumente%20und%20Einstellungen/katzenmann/Anwendungsdaten/OpenOffice.org/3/user/template;file:///D:/Spezialvorlagen".
Das ist eine Aneinanderreihung aller in OOo irgendwo registrierten Vorlagenpfade.
Die Beschreibungen bei http://api.openoffice.org/docs/common/r ... tings.html oder http://wiki.services.openoffice.org/wik ... h_Settings
sind für mich nicht wirklich erhellend.
Dank Xray-Tools konnte ich sehen, dass der PathSettings-Service gleich mehrere Properties für Vorlagen bietet, die miteinander zusammenhängen. Die Properties heißen:
1) Template (als Multipath-String) <= alle registrierten Pfade
2) Template_user (String-Array) <= benutzerdefinierte Pfade
3) Template_internal (String-Array) <= interne Pfade
4) Template_writable (Singlepath-String) <= Standardpfad
(1) liefert die Zusammenfassung von (2) bis (4). Beim Schreiben wird ein angegebener Pfad bei (2) eingegliedert, sofern er dort noch nicht vorhanden ist.
Tolles Forum! - Und vielleicht weiß jemand Rat?
Gruß an alle von katzenmann