Eine Klarstellung, die nach einem Einwand nötig ist:Meine Idee zur Nutzung eines Makros zur Neuberechnung betrifft natürlich *alle* LO-Dokumente. Daher bedarf es einer Anpassung des Makros. Am einfachsten ist auch hier wieder die Fehlerbehandlung mit Resume Next, so dass bei z.B. Writer-Dokumenten keine Fehlermeldung kommt.
Wenn nur bestimmte Calc-Dokumente betroffen sein sollen, kann man z.B. eine benutzerdefinierte Dokumenteigenschaft einsetzen, sagen wir "Neuberechnen per Makro" mit booleschem Wert.
Dann könnte das Makro so aussehen: Sub CalculateAll() Dim oDoc Dim oUDP 'Alle benutzerdefinierten Eigenschaften On Error Resume Next 'Kann ja nicht schaden oDoc = ThisComponent oUDP = oDoc.DocumentProperties.UserDefinedProperties If oUDP.PropertySetInfo.hasPropertyByName("Neuberechnen per Makro") Then If oUDP.getPropertyValue("Neuberechnen per Makro") Then oDoc.calculateAll() End If End If End SubIst alles ziemlich aufwändig. Der Weg, die ChangedOn-Funktion unter Verwendung der mittleren Makrosicherheit im Dokument zu speichern, ist auch im Hinblick auf die Verwendung in einem komplexen Firmennetz sicher erheblich einfacher.
Man sieht aber auch, wie flexibel LO eingesetzt werden kann. Schöne Grüße Volker Am 07.06.21 um 19:37 schrieb Volker Lenhardt:
Kleine Schusseligkeit in Punkt 4:Es muss heißen: ... - Achtung: in der Zeile unter der Liste LibreOffice auswählen, nicht die Datei - ...Schöne Grüße Volker Am 07.06.21 um 17:57 schrieb Volker Lenhardt:Hallo Boris,für den Fall, dass du immer noch Schwierigkeiten mit dem Sicherheitszertifikat hast, kann ich dir eine nicht wirklich elegante, aber m.E. funktionierende Lösung auch mit hoher Makrosicherheit vorstellen.1. Du löscht alle Makros in der Standard-Bibliothek des Dokuments, am besten durch Löschung der existierenden Module.2. Du verwendest, wie von Werner Tietz vorgeschlagen, die Error-Behandlung, gespeichert in Meine Makros & Dialoge/Standard:Function ChangedOn() As Date Dim oDoc Dim ChgDate On Error Resume Next oDoc = ThisComponent ChgDate = oDoc.DocumentProperties.ModificationDate'ChgDate ist leer, wenn das Dokument noch nie gespeichert wurde. In diesem Fall CreationDate nutzenIf ChgDate.Year = 0 Then ChgDate = oDoc.DocumentProperties.CreationDate End If ChangedOn = DateSerial(ChgDate.Year, ChgDate.Month, ChgDate.Day) End Function3. Du erstellst ein Makro zur Neuberechnung aller Tabellen und speicherst es genau wie "ChangedOn" in Meine Makros ...:Sub CalculateAll() ThisComponent.calculateAll() End Sub4. Du öffnest die Datei und verknüpfst über Extras/Anpassen/Ereignisse - Achtung: in der Zeile unter der Liste die Datei auswählen, nicht LibreOffice! - die Ereignisse "Ansicht wurde erzeugt" sowie "Dokument wurde gespeichert" jeweils mit dem Makro CalculateAll.Wenn du die Datei öffnest, wird ChangedOn entweder leer sein oder aus einer anderen geöffneten Datei stammen. Es wird aber kein Fehler angezeigt. Wenn aber einen Augenblick später die Ansicht erzeugt ist, wird ThisComponent dann endlich diese Datei referenzieren, und alles wird sofort neu berechnet, woraufhin ChangedOn den korrekten Wert erhält. Den zwischenzeitlich falschen Wert wirst du nicht bemerken. Außerdem wird ChangedOn auch nach jedem Speichern aktualisiert.Probier es einmal aus. Bei mir funktioniert es. Schöne Grüße Volker Am 03.06.21 um 14:14 schrieb Boris Kirkorowicz:Hallo, um das Speicherdatum automatisiert in eine Zelle zu bekommen, habe ich folgendes Makro (nicht von mir, sondern gefunden gekriegt) in mein Calc-Dokument eingebaut:REM ***** BASIC ***** Function ChangedOn() As Date Dim oSheet As Object Dim ChgDate As Variant oSheet = ThisComponent() ChgDate = oSheet.DocumentProperties.ModificationDate' ChgDate ist leer, wenn das Dokument noch nie gespeichert wurde. In diesem Fall CreationDate nutzenIf ChgDate.Year = 0 Then ChgDate = oSheet.DocumentProperties.CreationDate End If ChangedOn = DateSerial(ChgDate.Year, ChgDate.Month, ChgDate.Day) End FunctionDieses Makro nutze ich, indem ich es in der gewünschten Zelle mit =CHANGEDON() aufrufe. Beim Öffnen des Tabellendokuments begegnet mir die Meldung:BASIC-Laufzeitfehler. Eigenschaft oder Methode nicht gefunden: DocumentProperties.Nach manuellem Aktualisieren mit [Strg]+[Shift]+[F9] ist allerdings das Speicherdatum in der Zelle korrekt. Für die Funktion scheint es nicht direkt schädlich zu sein, aber es stört natürlich, wenn man erst einmal zwei Fenster (die Meldung und das Makro-Fenster) schließen muss, bevor man arbeiten kann, und es macht keinen guten Eindruck, wenn man die Tabelle weiterreicht. Was bedeutet diese Meldung? Wie lässt sich das abstellen?
-- 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