Date: prev next · Thread: first prev next last
2018 Archives by date, by thread · List index


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.