BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Tabellendokumentvorlage (.ots) - BASIC Makro Problem / Mime-Type!

Alles zur Programmierung im LibreOffice.
nostromo
Beiträge: 33
Registriert: So 20. Aug 2017, 12:52
Wohnort: Osnabrück

[gelöst] Tabellendokumentvorlage (.ots) - BASIC Makro Problem / Mime-Type!

Beitrag von nostromo » Do 7. Jan 2021, 17:13

Moin!

Wie kann ein bestehendes Tabellendokument einer Vorlage (Vorlage.ots) nach einer ersten Bearbeitung erneut als (Vorlage_erweitert.ots) via BASIC-Makro "richtiger" gespeichert werden?

Die derzeitige Lösung durch Austausch der Extension von ".ODS" zu ".OTS" im bestehenden Makro funktioniert nicht unter Linux - nur unter Windows.

Wird die so gespeicherte Datei unter Linux wieder geöffnet, wird nicht "Unbenannt1" angezeigt...
... unter WIN10 erfogt das jedoch ...

Hat jemand eine Idee? Vorerst danke!

Mit Linux:
opensuse, plasma, LO V7.0.4.2 (flatpack & offiziell)
ubuntu 20.04, LO V6.4.6.2 (offiziell)
... getestet.

Code: Alles auswählen

... Auszug ...

SRANAME = Environ(BSYSTEM) & CLOUD & "SRA_" & SRANR & "_" & DEBNR & "_" & DATUM & ".OTS"

DATEINAME = ConvertToUrl(SRANAME)
msgBox ("SRA-Vorlage wird gespeichert." & chr$(10) & chr$(10) & "Speicherort: " & chr$(10) & chr$(10) &  SRANAME, 48, "expanded ~ Prüfprotokoll")

thisComponent.StoreAsUrl (DATEINAME, dummy())
Zuletzt geändert von nostromo am So 10. Jan 2021, 16:11, insgesamt 1-mal geändert.
cu
nostromo

nitja
Beiträge: 123
Registriert: Di 20. Okt 2020, 15:55

Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem

Beitrag von nitja » Do 7. Jan 2021, 17:58

Es ist, im Gegensatz zur Meinung vieler, vor allem M$-Nutzer, nicht damit getan eine ….ods-Datei in ….ots umzubenennen um daraus eine vollwertige Vorlage zu machen. Die Vorlage muss zudem im für LO für Vorlagen zugewiesenen Pfad¹ gespeichert werden. Zu finden unter "Extras">"Optionen…" "LibreOffice/"Pfade". Dann hat man im LibreOffice-Fenster die Möglichkeit unter "Dokumentvorlagen" die Vorlage entweder zu "öffnen" (erzeugen der "Unbenannt"-Kopie) oder (mit Rechtsklick) zu "bearbeiten" und wieder als Vorlage zu speichern.

¹) Der ist nicht fest vorgegeben, kann durchaus, auch um Server-Adressen erweitert werden.
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

nostromo
Beiträge: 33
Registriert: So 20. Aug 2017, 12:52
Wohnort: Osnabrück

Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem

Beitrag von nostromo » Do 7. Jan 2021, 19:56

Hallo nitja,

ich habe das im Makro voreingestellten Verzeichnis in den LO Einstellungen der Vorlagen ergänzt ...
Leider keine Änderung...

Ich kann mir auch nicht vorstellen, dass der Speicherort relevant ist.
Dateieigenschaften sind gerade unter Linux nicht an einen Speicherort gebunden!

Aber vielleicht habe ich dich falsch verstanden!?
cu
nostromo

nitja
Beiträge: 123
Registriert: Di 20. Okt 2020, 15:55

Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem

Beitrag von nitja » Fr 8. Jan 2021, 01:43

nostromo hat geschrieben:
Do 7. Jan 2021, 19:56

ich habe das im Makro voreingestellten Verzeichnis in den LO Einstellungen der Vorlagen ergänzt ...
Aber vielleicht habe ich dich falsch verstanden!?
Wohl mindestens teilweise.
Wobei ich Deinen ersten hier zitierten Satz auch nicht ganz verstehe.

Probiere mal folgende zwei Verfahren:
Die geänderte Datei gar nicht erst als .ods-Datei speichern, sondern gleich als Dokumentvorlage (via "Datei"/"Dokumentvorlagen">"Als Dokumentvorlage speichern").
Ins Arbeitsverzeichnis (also dort wo die .ods-Dateien aus der Vorlage erzeugt werden sollen) ein Link auf die .ots-Datei im Vorlagenverzeichnis setzen und schauen wie das beim Öffnen reagiert. Hat bei mir bei verschiedenen Linux-Distributionen immer funktioniert.

Übrigens, es geht beim Speicherort für Vorlagen nicht darum, Dateieigenschaften zu verändern, das passiert nicht. Aber LO gibt Dir für Bearbeiten & Organisieren von Vorlagen mehr Möglichkeiten, wenn sie in einem dafür vereinbarten (von den "Arbeitsverzeichnissen" getrennten) Ordner stehen.
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

nostromo
Beiträge: 33
Registriert: So 20. Aug 2017, 12:52
Wohnort: Osnabrück

Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem

Beitrag von nostromo » Fr 8. Jan 2021, 16:57

Um das Bild etwas runder zu machen hier zunächst die Zielsetzung.

Ein Prüfprotokoll wird als Dokumentenvorlage (VORLAGE.ots) über eine Cloud (nextcloud) in einem synchronisierten Verzeichnis: "VORLAGE" zu Verfügung gestellt. Das Protokoll ist zu diesem Zeitpunkt "blanko" = inhaltlich leer! ... das geht soweit!

Im ersten Schritt öffnet der Mitarbeiter die leere VORLAGE.ots und ergänzt bestimmte Daten (Messgerätename, SN, etc. = Kopfdaten). Diese gerätespezifische Vorlage (VORLAGE-NEU.ots) wird nun ebenfalls automatisch (Makro) in einem nextcloud-Verzeichnis gespeichert werden.

Die Speicherung muss via Makro erfolgen - nicht manuell (speichern unter / als .ots)

Die gerätespezifische "VORLAGE-NEU.ots" wird im letzten Arbeitsgang vom Mitarbeiter wieder geöffnet und mit den Prüfdaten ausgefüllt.

Die vollständig ausgefüllte Datei wird nun in einem Mitarbeiter-Verzeichnis als "ERGEBNIS.ods" gespeichert und ein daraus generiertes ERGEBNIS.pdf wird in einem Kunden-Verzeichnis gespeichert. (..alles via Makro!)

Ich kann daher nicht mit üblichen lokalen Verzeichnissen arbeiten ... Natürlich könnte ich das LO-Vorlagenverzeichnis synchronisieren - dies ist jedoch ein zu großer administrativer Aufwand.

Das im Makro voreingestellte Verzeichnis lauten u.a.:
WIN: C:\user\Nextcloud\VORLAGE
LIN: /home/user/Nextcloud/VORLAGE

Das funktioniert soweit auch!

Öffne ich die "VORLAGE.ots" von Windows aus wir eine "Unbenann1.ods" von LO generiert.
.. via Linux die selbe Datei "VORLAGE.ots" geöffnet nennt sich weiterhin "VORLAGE.ots"

Wenn ich manuell die Datei "VORLAGE.ots" unter Linux als "VORLAGE-NEU.ots" speichere wird die Vorlagendatei als "Unbenannt1.ods" wieder geöffnet.... (lin & Win) Über das Makro jedoch unter Linux als "VORLAGE.ots"

Ebenso werden unter Linux die von Makro unter Windows erstellten "VORLAGE-NEU.ots" nicht als "Unbenannt1.ods" geöffnet.

Ich gehe derzeit von einem Programmfehler in der LO Version für Linux aus, da eine Aktualisierung auf LO 7.04.2 unter Windows dieses falsche Verhalten nicht zeigt.

Oder muss eine ".ots" mit einer anderen Funktion im Makro gespeichert werden?
cu
nostromo

nostromo
Beiträge: 33
Registriert: So 20. Aug 2017, 12:52
Wohnort: Osnabrück

Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem

Beitrag von nostromo » Fr 8. Jan 2021, 17:06

Hier noch zwei Screenshots:

via Windows
win-LO.png
win-LO.png (4.23 KiB) 1626 mal betrachtet
via Linux
lin-LO.png
lin-LO.png (9.84 KiB) 1626 mal betrachtet
cu
nostromo

nitja
Beiträge: 123
Registriert: Di 20. Okt 2020, 15:55

Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem

Beitrag von nitja » Fr 8. Jan 2021, 18:56

Ich habe das jetzt mal bei einer Test-Datei durchgespielt. Die Umbenennung in .ots macht keine Vorlage aus der Datei.
Der mime-type bleibt beim Umbenennen unverändert und der bestimmt wie Linux die Datei behandelt.
Beim Speichern als Vorlage wird u.a. der mime-type entsprechend angepasst.
Windows, allerdings, setzt beim Öffnen von Dateien einzig auf die "extension" (kann z.B. - anders als Linux - eine Datei namens Text nicht öffnen, wenn nicht ein ".txt" an den Dateinamen dran gehängt wird) und behandelt die umbenannte Datei als wäre sie eine Vorlage.
Du kannst aber beim speichern der Datei per storeasurl(<url>,<properties>) als "properties" entsprechende Filter für den zu verwendeten Dateityp setzen. Das entspricht dann dem manuellen "als Vorlage speichern".
Zuletzt geändert von nitja am Sa 9. Jan 2021, 08:01, insgesamt 2-mal geändert.
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

Wanderer
Beiträge: 895
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem

Beitrag von Wanderer » Sa 9. Jan 2021, 01:56

nostromo hat geschrieben:
Fr 8. Jan 2021, 16:57
Ich gehe derzeit von einem Programmfehler in der LO Version für Linux aus, da eine Aktualisierung auf LO 7.04.2 unter Windows dieses falsche Verhalten nicht zeigt.

Oder muss eine ".ots" mit einer anderen Funktion im Makro gespeichert werden?
Schau mal hier http://www.dannenhoefer.de/faqstarbasic ... l#Zweig140
nach den schon von nitja erwähnten Properties-Arrays. Die genauen Werte sind sicher "irgendwo" in der API zu finden.
Mein Vorschlag wäre erstmal einen manuellen Speichervorgang als MAkro aufzuzeichnen und das Ergebnis zu analysieren.

Es reicht eben nicht, daß die Extension geändert wird, wobei ich auch nie nachgesehen habe,
was im einzelnen die Unterschiede ausmacht...

mfg, Jörn
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

nostromo
Beiträge: 33
Registriert: So 20. Aug 2017, 12:52
Wohnort: Osnabrück

Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem

Beitrag von nostromo » Sa 9. Jan 2021, 11:51

@nitja
@wanderer

ich denke ihr liegt da 100% richtig - kein Fehler im Programm - eher zwischen meinen Ohren :-)
Die reduzierten Fähigkeiten von Windows mit Dateien umzugehen führen genau zu dem festgestellten Verhalten.

Ich muss gestehen, dass ich das Makro aus einem mehrer Jahre alten Projekt "entführt" und nur hinsichtlich des generierten Dateinamens anstelle von ".ods" auf ".ots" geändert habe ...

Hat einer vielleicht eine super Link zu den von @nitja beschrieben "properties"?

Wie in meinem Makro zu sehen, habe ich hier nur "dummy()" stehen - ich habe dies nur übernommen, ohne genau zu wissen, was das genau bewirkt.

Danke.
cu
nostromo

nostromo
Beiträge: 33
Registriert: So 20. Aug 2017, 12:52
Wohnort: Osnabrück

Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem

Beitrag von nostromo » Sa 9. Jan 2021, 12:01

@wanderer

Hier die Aufzeichung des Makros ...
... ich werde mal schauen ob ich das verstehe ...

Code: Alles auswählen


sub Macro1
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///home/nostromo/Nextcloud/HKD-EXPANDED-VORLAGEN/SRA-TEST.ots"
args1(1).Name = "FilterName"
args1(1).Value = "calc8_template"

dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())


end sub

cu
nostromo

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten