LO Calc - Programmversion in Zelle ausgeben

Hallo zusammen,

wir verwenden betrieblich eine etwas komplexere Abrechnungsvorlage für
Calc. Die MitarbeiterInnen (>300) benutzen die verschiedensten
Programm-Versionen, oft uralte. Da sie die Abrechnung ausdrucken müssen,
wäre es super, wenn es eine Möglichkeit gäbe, die verwendete LO-Version
auszugeben. Da könnte man bei Problemen gleich sehen, mit welcher
Version der Ausdruck erstellt wurde. Alleine mit der Build-ID werde ich
nicht froh.

Hat wer eine Idee?

Gruß an alle
Günther

Hallo Günther,

per Makro ganz einfach, z. B.:
GlobalScope.BasicLibraries.LoadLibrary("Tools")
msgbox GetProductName

GetProductName findet sich in Tools unter Misc, wie manch andere interessante sub oder function.
Das gibt allerdings nur die beiden ersten Ziffern aus, wenn du genauere Infos brauchst, müsstest du aus den Zeilen in dem Macro und der weiteren Zeile
msgbox GetRegistryKeyContent("org.openoffice.Setup/Product").ooSetupVersionAboutBox
, die nur die Versionsnummer bis zum Detail ausgibt, dir was eigenes zusammenbasteln.

Gruß

Gerhard

Okay danke! - Ohne Makro keine Chance, oder?

LG Günther

Hallo Günther,

ich wüsste nicht, wie das ohne Makro ginge, ich halte es auch nicht für wahrscheinlich, dass es geht, aber vielleicht zaubert ja noch jemand was aus dem Hut.
Falls du von Makros nicht viel weißt: Mein Beispiel gibt natürlich nur eine Nachricht aus, du müsstest die Ausgabe stattdessen einer Zelle zuweisen, und auch überlegen, bei welchem Ereignis das Makro aufgerufen werden soll, z.B. beim Speichern. Ich will das zunächst nicht vertiefen, weil ich ja nicht weiß, wie weit du dich auskennst.

Gruß

Gerhard

Hallo Günther,

für die Ausgabe einer Versionsnummer habe ich keine bordeigene Funktion gefunden,
aber Du kannst die Funktion "info" verwenden und Dir die BuildID von LO ausgeben lassen:
*=INFO("release")*
Ich weiß allerdings nicht, ab welcher Version diese Funktion unterstützt wird.

Ansonsten nur mittels Makro:
Hier eine UDF, abgeleitet von Gerhard's Code:

/REM eine UDF (User defined function)//
//REM wird in der Zelle aufgerufen mit --> =Version()//
//function Version()as string//
//GlobalScope.BasicLibraries.LoadLibrary("Standard")//
//    Version="LibreOffice Version " & GetRegistryKeyContent("org.openoffice.Setup/Product").ooSetupVersionAboutBox//
//end function/

MIt "GlobalScope.BasicLibraries.LoadLibrary("Standard")" innerhalb der Funktion lade ich meine Standard-Bibliothek.
D.h. ich habe bei mir ein neues Modul in "Meine Makros & Dialoge/Standard" erstellt und die Funktion hineinkopiert.
Dadurch funktioniert der Code in jedem Calc-Dokument.

Gruß

Jürgen

IIRC gab es das schon immer.

Wolfgang

Danke für die Anregung, Jürgen! Ich schau mal, ob ich da zurecht komme.

Gruß Günther

Hallo Jürgen und alle Mitlesenden,

das mit der UDF hat bisher sehr gut funktioniert! Mit dem Einbinden der
Library gab es Probleme, da ich die Funktion nicht in der
Standard-Bibliothek sondern nur im konkreten Vorlagen-Dokument haben
will. Damit man die Anwender dazu bringt, die Makros auch einzuschalten,
habe ich in der Zelle mit der neuen Funktion eine Wenn-Abfrage erstellt.
Gibt die Funktion eine Fehlermeldung aus, bekommt man den Hinweis, die
Datei neu zu öffnen und die Verwendung von Makros zu erlauben. Beim
Laden der Datei stand die Standard-Bibliothek jedoch nicht gleich zur
Verfügung. Also habe ich die Funktion GetRegistryKeyContent... direkt
übernommen, also die paar Zeilen in mein Modul einkopiert und auf den
Aufruf der Library verzichtet. Damit klappt es.

Nun das nächste Problem: Die Vorlagendatei soll von unseren Mitarbeitern
verwendet werden, die alle von zu Hause aus arbeiten. Vielen von ihnen
können ganz schlecht mit Computer umgehen. Jeglicher
Konfigurationsbedarf muss deshalb vermieden werden (deswegen auch die
bisherige Vermeidung von Makros). Die Verwendung von Signaturen könnte
alles leichter machen. Durch die Unterstützung von PGP habe ich schon
eine Lösung vor Augen gesehen, da wir PGP bereits erfolgreich im Einsatz
haben. Der Anwender müsste nur einmal anklicken "Dieser Quelle immer
vertrauen" und schon wären auf Dauer die Sicherheitsabfragen obsolet. So
könnten wir das betrieblich auch praktikabel umsetzen.

Nun hatte ich erhebliche Schwierigkeiten, die Makros zu signieren. Am
Laptop konnte ich erst nach einigen Versuchen die Makros signieren, ohne
zu erkennen, warum es bei x-ten mal geklappt hat und zuvor nicht. Die
Funktionsweise ist je nach Sicherheitsstufe dann wie gewünscht.
Allerdings konnte diese Datei auf keinem anderen PC mehr geöffnet werden.

Auf einem privaten Rechner klappt das Signieren ohne Probleme wie
vorgesehen, nur wird die Signatur auf anderen PCs als ungültig abgelehnt
("Das Zertifikat kann nicht geladen werden") und die Makros bleiben
inaktiv. Auf meinem PC im Büro konnte ich beim Versuch die Makros zu
signieren zwar meine Signatur auswählen, dann ist LibreOffice jedesmal
komplett eingefroren. Zur Eingabe des Kennworts kam es nicht mehr. Nach
vielen Wiederholungen habe ich an diese Stelle aufgegeben.  Summa
summarum habe ich noch keinen funktionierenden Weg der Signierung von
Makros mit PGP gefunden oder ich habe etwas grundlegend nicht verstanden
und mache es falsch.

Kann es sein, dass die noch sehr junge Option der Signierung mit PGP
sehr unausgereift ist?

Umgebung auf allen getesten PCs: Win10 (aktualisiert), gpg4win-3.1.5, >
LO 6.1.

Vielleicht weiß wer etwas dazu ...

Gruß an die Gruppe
Günther

Hallo Günther,

vielen Dank für die Rückmeldung.
Zu signierten Dokumenten und Makros kann ich Dir mangels Nutzung leider nichts sagen.

Allerdings geht aus diesem Tutorial (https://help.libreoffice.org/Common/About_Digital_Signatures/de)
hervor, dass es ein Teil des Schlüssels auf dem jeweiligen Computer vorhanden sein muss und
der zweite Teil des Schlüssels ist in der signierten Datei gespeichert.
Aus beiden Schlüsseln wird zwecks Gültikeitsprüfung eine Prüfsumme gebildet.
Wenn ein Dokument signiert wurde, dann wurden auch darin enthaltenen Makros signiert.

Ich würde nun  folgenden Test durchführen:
a) den auf dem Rechner vorhandenen Primärschlüssel auf einen anderen Rechner kopieren (gleiches Verzeichnis)
b) dann das signierte Dokument auf dem anderen Rechner laden.
c) Wird der Schlüssel erkannt, dann muss der Primärschlüssel an alle Beteiligten versandt werden.
Ggf. per Script "installiert" werden, damit der Primärschlüssel immer im gleichen Verzeichnis gespeichert ist.

Ansosnten bin ich hier überfragt.

Viele Grüße

Jürgen