Seite 1 von 2
[gelöst] Tabellendokumentvorlage (.ots) - BASIC Makro Problem / Mime-Type!
Verfasst: Do 7. Jan 2021, 17:13
von nostromo
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())
Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem
Verfasst: Do 7. Jan 2021, 17:58
von nitja
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.
Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem
Verfasst: Do 7. Jan 2021, 19:56
von nostromo
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!?
Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem
Verfasst: Fr 8. Jan 2021, 01:43
von nitja
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.
Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem
Verfasst: Fr 8. Jan 2021, 16:57
von nostromo
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?
Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem
Verfasst: Fr 8. Jan 2021, 17:06
von nostromo
Hier noch zwei Screenshots:
via Windows

- win-LO.png (4.23 KiB) 2615 mal betrachtet
via Linux

- lin-LO.png (9.84 KiB) 2615 mal betrachtet
Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem
Verfasst: Fr 8. Jan 2021, 18:56
von nitja
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".
Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem
Verfasst: Sa 9. Jan 2021, 01:56
von Wanderer
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
Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem
Verfasst: Sa 9. Jan 2021, 11:51
von nostromo
@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.
Re: Tabellendokumentvorlage (.ots) - BASIC Makro Problem
Verfasst: Sa 9. Jan 2021, 12:01
von nostromo
@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