Hallo Michael,
das wird jetzt eine längere Antwort, bei den vielen Themen.
Zunächst, was schneller geht, zu den Vorlagen. Ich verstehe deinen
Wunsch zu kaskadierenden Vorlagen, das wäre sehr geschickt und
praktisch, wenn es so etwas gäbe, aber nach meinem allerdings sehr
unvollständigen Einblick in die Situation habe ich den Eindruck, dass
das nicht so einfach ist. Ich schrieb, glaube ich schon, dass die
Dokumentvorlagen ja als eigenständige Dokumente realisiert sind und
damit die vollständige Formatierungsinformation beinhalten, genauso wie
die Dokumente (die in deinem Szenario zum Teil wiederum Vorlagen wären),
die sich auf die Vorlage beziehen. Damit ist es zunächst einmal
schwierig, zu entscheiden, bei zwei sich widersprechenden
Formatierungsangaben aus den beiden Dateien zu entscheiden, welche jetzt
beibehalten und welche überschrieben werden darf, denn es fehlt eine
Basis, auf die man sich bezieht. Bei den Formatierungen, di innerhalb
eines Dokuments gelten, wie Zeichen- und Absatzformatierungen in Writer,
sieht das anders aus, weil nur die geänderten Formatierungen gespeichert
werden; also nur wenn das abhängige Dokument überhaupt z.B. die
Schriftart angibt, wird sie verwendet. So geht das aber bei zwei
eigenständigen Dokumenten nicht.
Das ist nun keine exakte Begründung, aber gibt mein Gefühl für die
Schwierigkeit wieder, auf die dein Wunsch trifft. Ich behaupte auch
nicht, dass die Frage nicht lösbar wäre, sondern nur, dass es aus meiner
Sicht hinreichend große Schwierigkeiten gibt, so dass es mich nicht
wundert, dass das Thema bisher nicht in deinem Sinn gelöst wurde.
Ich habe selbst nur marginal mit Dokumentvorlagen gearbeitet, für meine
privaten Bedürfnisse brauche ich da ja nur wenig, und beruflich habe
ich, abgesehen davon, dass da LibreOffice nicht zum Einsatz kam, auch
mit Datenbanken und administrativen Anwendungssystemen gearbeitet. Daher
kann ich deine Situation nur ungenügend einschätzen, aber mein Gefühl
sagt mir, dass die Anzahl an Vorlagen, die du auf den drei Ebenen, die
du nennst (und dass es wesentlich mehr sein sollen, kann ich mir auch
nicht recht vorstellen), doch recht beschränkt ist, und auch die Anzahl
an Formatierungen, die du an den einzelnen Ebenen vornehmen willst. Es
wäre elegant, diese Dinge direkt in den Dokumenten abzulegen, aber
andererseits dürfte der Aufwand, diese Angaben in einem Dokument
festzuhalten, damit sie jeweils in das unterste Element der Kaskade
übernommen werden können, nicht sehr groß sein. Und der Aufwand, die
Formatierungen einzurichten, ist ja auch nicht höher, wenn man zunächst
die Formatierungen der ersten Ebene in ganz normalen (eher temporären
Hilfs-) Dokument einrichtet, dann von diesen ausgehend entsprechende
Dokument der zweiten Ebene durch Anreichern erzeugt, und daraus dann die
dritte Ebene. Was dann fehlt, ist das automatische Propagieren einer
Änderung auf einer höheren Ebene auf die niedrigeren, das wäre
Handarbeit, die durch die genannte Dokumentation unterstützt würde. Aber
mit wieviel Änderungen muss man da überhaupt rechnen?
Daher finde ich ein "Abfinden" in diesem Fall nicht schlimm, ich könnte
damit gut leben. Du kannst natürlich die Anforderung als Enhancement in
der Fehlerawendung Bugzilla aufnehmen, aber ich verspreche mir da
angesichts des doch wahrscheinlich hohen Änderungsaufwands in der
Struktur und des doch nicht so hohen Komfortgewinns nicht viel.
Man könnte sicher mit Makros die Übertragung von Formatierungen vom
jeweiligen Master auf den Slave/Child irgendwie abbilden, aber die
Frage ist immer, ob sich das lohnt.
Wie ich schon schrieb, gibt es eine Extension, die sich mit dem
Austausch von Vorlagen beschäftigt, die aber nicht mehr funktioniert.
Angeregt durch deine Frage habe ich mir das genauer angeschaut, die
Extension kann leicht wieder zum Laufen gebracht werden, wenn man ein
paar Variablen-Umbenennungen, die in LibreOffice inzwischen geschen
sind, im Code nachzieht. Gerade deine Frage nach dem vollständigen
Löschen der Verbindung zur Vorlage wird aber dort nicht behandelt,
obwohl die erforderlichen Informationen bekannt sind; das Makro solltest
du also aufheben.
Ich habe vor, entweder die Extension zu aktualisieren - der Autor
scheint offenbar kein Interesse mehr daran zu haben - oder, wenn das
technisch nicht geht (ich kann ja eine Extension einer anderne Person
normalerweise nicht ändern), eine neue zur Verfügung zu stellen. Aber
das hilft die zunächst ja nicht weiter, das könntest du vielleicht
später mal gebrauchen.
Nun zu Makros:
Das Umbenennen eines Moduls ist einfach: in der Baisc-IDE, wo du den
Makro-Code siehst, siehst du ziemlich weit unten Tab-Reiter, bei dir
wahrscheinlich einen einzigen, in dem der Name "Module1" steht. Rechre
Mausklick auf diesen Reiter öffnet das Kontextmenü, in dem du
"Umbenennen" findest (die Änderung ist nicht unbedingt sofort in der
Baumstruktur links sichtbar). Ansonsten musst du beim nächsten Mal, wenn
du so etwas anlegst, einfach auf dn Dialog aufpassen, in dem der Name
"Modul1" o.ä. vorgeschlagen wird, und kannst dann gleich da den
richtigen Namen setzen.
Die Handhabung der Basic-IDE ist nicht unbedingt schwer, aber
gewöhnungsbedürftig, ich habe zuerst auch geflucht, habe mich aber
inzwischen gut zurechtgefunden. Am Verblüffendsten finde ich immer noch,
dass ich, obwohl ich die IDE schon geöffnet habe, nochmals Extras ->
Makros verwalten -> LibreOffice Basic... aufrufen muss und dann das
gewünschte Dokument anklicken, wenn ich dort erstmals ein Makro eingeben
will, anders komme ich, soweit ich weiß, nicht dort hin.
Zum Speichern von Makros hast du grundsätzlich zwei Möglichkeiten: in
einem Dokument, was bei auf dieses Dokument bezogenen Funktionen
sinnvoll ist, oder, wie du getan hast, in "Meine Makros", wenn man das
in mehreren Zusammenhängen braucht.
Da ich kein System mit mehreren Rechnern betreibe, halte ich mit
Spekulationen zurück, was dann im Netz zugänglich ist. Aber man kann
ganze Bibliotheken exportieren und importieren:
Verwalten -> Reiter "Bibliotheken" -> Exportieren (wenn nicht gerade
"Standard" aktiviert ist) bzw. "Importieren"
Und du findest sie natürlich jederzeit über die Makro-Verwaltung unter
"Meine Makros".
Zu meinem Makro: das beschäftigt sich nur mit den Angaben zur
Dokumentvorlage, nämlich Name, URL (=Speicherort) und Zeitstempel
(offenbar der Zeitstempel der Vorlage, den sie hatte, als das Dokument
zuletzt von dort aktualisiert wurde, zum Prüfen, ob eine erneute
Aktualisierung notwendig ist). Diese drei werden auf Initialwerte
gesetzt, also leer bei den Textfeldern und auf 0 bei allen Komponenten
des Zeitstempels, der in der Variable dt behandelt wird, und FALSE bei
der Angabe, ob das UTC, offenbar Coordinated Universal Time, ist, das
kannst du in Wikipedia nachlesen, ich denke, ich habe das einfach
netsprechend dem Inhalt in einem neu erzeugten Dokument gesetzt.
Du siehst nur das erste Feld in Datei -> Eigenschaften, das zweite und
dritte könnten allerdings relevant werden, wenn die Verknüpfung mit der
Dokumentvorlage wieder aktiviert werden würde, die durch das Verneinen
der Übernahme der Formatierungen aus der Vorlage inaktiv gesetzt wurde.
Diese Eigenschaft setzt mein Makro nicht, weil ich das auch bei dir
vorausgesetzt hatte, aber sie findet sich z.B. in dem Makro, das ich dir
wohl auch genannt hatte, das in Erste Schritte -> Vorlagen wiedergegeben
wird; in der genannten Extension werde ich das, so sie zustande kommt,
berücksichtigen.
Ich habe deshalb sicherheitshalber in meinem Makro auch die
oberflächlich nicht sichtbaren Eigenschaften zurückgesetzt, so kann auch
bei einem späteren Aktivieren der Vorlagenverknüpfung eigentlich nichts
passieren, denn es gibt ja keine URL, die ein Dokument identifizieren
würde. Der dt-Abschnitt setzt nur den Zeitstempel auf den Initialwert.
Die Angaben zu Bearbeitungszeit und Revision haben aber nichts mit der
Vorlage zu tun, sondern beziehen sich auf das Dokument selbst. Deshalb
werden sie im Makro nicht angesprochen und dementsprechend auch nicht
verändert. Wenn du da was ändern möchtest (Warum ist das wichtig?)
müsstest du schon mit einem anderen Makro zugreifen.
Damit sind wir beim allgemeinen Thema Makros.
Vorab: Ich freue mich, dass du begonnen hast, dich da einzuarbeiten, ich
finde, dass das sehr viel Spaß macht, denn man kann sehr viel erreichen.
Basic selbst, egal ob in der Variante, die in LibO verwendet wird, oder
in einer anderen, ist ja sehr überschaubar, aber das Reizvolle ist der
Zugriff auf die sehr komplexen Objekte, die über das sogenannte UNO =
Universal Network Objects zur Verfügung gestellt werden, im Makro sind
das ThisComponent, dessen Unterobjekt DocumentProperties, wiederum
dessen Unterstruktur TemplateDate und die einfachen String-Attribute
TemplateName und TemplateURL. Methoden der Objekt sind im Beispiel nur
implizit (in der Zuweisung am Ende) vorhanden.
Diese Objekte machen den Reichtum der Möglichkeiten aus, die ein Makro
trotz des beschränkten Umfangs der eigentlichen Basic-Befehle erreichen
kann (was auch mit andern Programmiersprachen möglich ist,aber damit
habe ich mich bisher nicht beschäftigt).
Die Informationen über die Objekte kann man prinzipiell über die
Dokumentation rauskriegen, aber die ist streng hierarchisch organisiert,
was bedeutet, dass das meiste über Vererbung von irgendwo weiter oben
geliefert wird, so dass ein Gesamtüberblick schon sehr viel Hin-und
Herklicken und Notieren der gefundenen Informationen bedeuten würde (wie
bei deinen geschachtelten Vorlagen, aber natürlich wegen viel mehr
Ebenen weitaus komplizierter). UNO bietet auch Basis-Funktionen an, wie
man alle (also direkt vergebene und ererbte) Attribute, Methoden usw.
eines Objekts anzeigen kann, aber viel besser kann man das über ein
Werkzeug namens XRay erreichen, das diese übersichtlich darstellt und
einen Drilldown ermöglicht, also im obigen Beispiel von ThisComponent
auf DocumentProperties springen und von da aus auf die genannten
atomaren Attribute oder die Struktur des Zeitstempels. Ich erachte
dieses Werkzeug für unerlässlich, wenn man selbst Makros in diesem
Bereich schreiben will.
Die Dokumentation zu Makros ist nicht üppig. Eine knappe Einführung gibt
das Kapitel 13, Einführung in Makros des Handbuchs Erste Schritte, das
ich geschrieben habe (die frühere Version hatte sich hauptsächlich mit
dem Aufzeichnen von Makros beschäftigt, was ich für eine Sackgasse
halte). Eine detailliertere Dokumentation findest du, abgesehen von der
Online-Hilfe, die aber eher atomar die eigentlichen Basic-Funktionen
beschreibt, bei LibreOffice leider nicht.
Es gibt aber durchaus weitergehende Dokumentation. Da seien vor allem
die Bücher von Thomas Krumbein (auch sehr aktiv in der Document
Foundation und in deutschen Foren) und von Bernard Marcelly/Laurent
Godard genannt. Ich habe mit Thomas Krumbeins Buch angefangen und später
Godard/Marcelly kennengelernt, wobei letzteres oft präziser und
weitergehend ist, aber man muss das Französische ausreichend
beherrschen, es gibt weder eine englische noch eine deutsche
Übersetzung, Bernard schrieb mir, das sich kein englischsprachiger
Verlag fand, für einen deutschen scheint die Hoffnung noch geringer zu sein.
Genauere Angaben in dem genannten Kapitel zu Makros, das du unter
https://de.libreoffice.org/get-help/documentation/
bei "Handbuch 'Erste Schritte'" findest, im Abschnitt "Bücher".
Dort findest du auch Informationen zu Xray, wo du es herunterladen und
installieren kannst. Mit dessen Hilfe habe ich das Makro erstellt:
ThisComponent aufgerufen, "DocumentProperties" schien aussichtsreich,
weil der Master in den EIgenschaften erschien, dann fanden sich
TemplateName und TemplateURL usw., und dann war alles ziemlich klar.
Die Datenfelder zu Revision und Bearbeitungszeit wirst du sicher auch
beim Dokument finden können, da ich selbst eine Änderung nicht für nötig
erachte, habe ich mich damit nicht beschäftigt.
Frage mich gerne direkt, wenn du in der Richtung der Makroprogrammierung
weiter arbeiten willst.
Gruß
Gerhard
Am 28.12.2018 um 18:49 schrieb Hessler, Klaus-Michael:
Hallo Gerhard,
ganz herzlichen Dank für die ausführliche und nachvollziehbare
Anleitung; Entschuldigung für die zeitliche Unterbrechung, es gab
einige anderen Themen die letzten Tage ...
Das Thema der Dokumentvorlagen scheint auch von vielen als
unvollständig empfunden zu werden,
Ja, das ist wirklich bedauerlich; so werden sicher viele von der so
sinnvollen Anwendung von Vorlagen abgehalten.
...
Ich möchte deshalb unsere Vorlagen unabhängig voneinander bauen, um
so die etwaige Frage nach einer Aktualisierung auszuschließen und
damit die Löschung z.B. der Kopf- und Fußzeilentexte etc. erst gar
nicht zu ermöglichen.
halte ich auch für den richtigen Weg.
Für das Löschen der Infos zur Verbindung habe ich bisher nichts
gefunden.
Du kannst dich nun mit den wirkungslosen Einträgen abfinden. Wenn
dich das aber stört:
Ich habe ein kleines Makro geschrieben, das diese Informationen löscht:
Sub loescheVorlageInfos
...
... Aber ich würde, da der Aufwand doch sehr überschaubar ist, lieber
reinen Tisch machen: die vier erstellten Dokumentvorlagen löschen und
dann die drei, die du brauchst, neu erstellen ohne Bezug zu einer
Dokument-Vorlage (was heißt, dass das wohl implizit die
Standard-Vorlage ist, aber deren Name erscheint ja nicht)....
Da die Aufgabe hier immer wieder vorkommen wird, habe ich mich ein
Wenig in Makros eingelesen (und trotzdem noch Fragen, s.u.) und Deine
Makros bei mir übernommen. "Damit abfinden" ist auch deshalb keine
Lösung, da bei meinen kaskadierenden Vorlagen immer ein Problem
bestehen würde, Beispiel:
* CALC_MASTER: Oberste Ebene, Dokumentvorlage hat: Seitenformate hoch
und quer
o CALC_Firma: Zweite Ebene, Dokumentvorlage hat Schriftarten,
Kopfzeile Firmenname, definierte Fußzeile, Seitenformate wie MASTER
+ CALC_Firma_PROJEKT1: Dritte Ebene: Dokumentvorlage hat
Zelle A1 mit definiertem Inhalt, Fußzeile mit mit "Projekt 1, im
Auftrag von XYZ, Projektleiter: Vorname Nachname".
Vielleicht zeigt dieses Beispiel noch einmal, wie er Detailreichtum
nach unten hin immer weiter zunimmt und insofern eine Löschung all
dieser Details durch Übernahme einer übergeordneten Änderung
(Seitenrand im Master) nicht sinnvoll ist.
Nun meine Fragen zu Makros: Ich habe in Extras > Makros > Makros
verwalten > LO-Basic eine Bibliothek "Dokumentvorlagen" erzeugt und
darin zwei Sub's "DokVorlageInfosLOESCHEN" und
"DokVorlageVerbingWIEDERHERSTELLEN" (Handbuch Erste Schritte / 5.2,
Seite 26) abgelegt.
* Wie kann ich das Modul "Module1" umbenennen (im Abschnitt LO-Makros
stehen dort sinnvolle Namen)?
* Ich finde es logisch, diese beiden Makros systemweit zu speichern;
wie finde ich die wieder, wenn sie auf einen neuen / anderen PC zu
übertragen sind? Wo stehen solche Sachen (in den Handbüchern)?
* Ich habe das Makro LOESCHEN erfolgreich ausgeführt, die vorher
vorhandene Verbindung zur CALC_MASTER-Vorlage wird nicht mehr
angezeigt. Überrascht hat mich, dass die Bearbeitungszeit und Revision
noch vorhanden sind. Was macht also der "dt"-Abschnitt bzw. womit
würden diese Inhalte (programmiert, nicht mit Button Eigenschaften
zurück) gelöscht? Wo finde ich solche grundlegenden Anleitungen.
Vielen Dank, Michael
--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.