Calc Datei mit Uhrzeit Speichern und Schließen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
Faol
***
Beiträge: 77
Registriert: Di, 26.01.2016 21:18

Re: Calc Datei mit Uhrzeit Speichern und Schließen

Beitrag von Faol » Di, 10.04.2018 15:23

Hallo,

Um Basic-Makros auszuführen brauchst Du keine Erweiterungen.

Ich habe mir vor längerer Zeit mal ein Makro geschrieben, mit dem ich
bequem verschiedene Versionen eines Dokuments speichern kann.
Bei mir habe ich dem Makro die Tastenkombination STRG + , zu gewiesen.
Damit wird mir die Datei in meinem Sicherungsordner gespeichert.
Damit dies funktioniert, muss der Dateiname einmalig ohne Extension im
Menü Datei\ Eigenschaften
Register: Beschreibung
Titel:
Test
Bitte nicht Test.ods

Nach Ausführung des Makros setzt sich der neue Name der Backup-Datei wie folgt zusammen:
Dateiname = Suffix & Datum mit Zeit & Präfix & Extension
z.B.
Dateiname = Zyreon__2018-04-10_135046_Backup.ods
sSuffix = der Titel aus den Dokumenteigenschaften
Datum = _2018-04-10
Uhrzeit _135046 (13:50:46)
Präfix = _Backup
Extension = .ods
Die Extension wird mittels Makro vergeben, in dem geprüft wird,
welches Programm (Writer, Calc, oder ...) gerade aktiv ist.

Code: Alles auswählen

REM  *****  BASIC  *****
REM Habe folgenden Shortcut zum Ausführen des Makros zugewiesen --> STRG+,
Sub xBackup
Dim oDoc as Object
Dim xDoc as Variant
Dim sFName as String
Dim sSuffix as String
Dim dummy()
	oDoc=ThisComponent
' Namen bzw. Suffix für den Dateinamen vergeben

' Es muss unter Menü Datei\Eigenschaften
' Register: Beschreibung 
' der Dateiname (ohne Extension) im Feld Titel eingegeben werden.
sSuffix = oDoc.DocumentProperties.Title

'mri oDoc

' geöffneten Dokumententyp ermitteln und Dateiname zusammensetzen:
' Dateiname = Suffix & Datum mit Zeit & Präfix & Extension
' WRITER
If oDoc.SupportsService("com.sun.star.text.TextDocument") THEN
  xDoc = array(sSuffix, format(now,"YYYY-MM-DD"), format(now, "hhmmss"), "Backup.odt")
' CALC
ElseIf oDoc.SupportsService("com.sun.star.sheet.SpreadsheetDocument") THEN
  xDoc = array(sSuffix, format(now,"YYYY-MM-DD"), format(now, "hhmmss"), "Backup.ods")
' IMPRESS
ElseIf oDoc.SupportsService("com.sun.star.presentation.PresentationDocument") THEN
  xDoc = array(sSuffix, format(now,"YYYY-MM-DD"), format(now, "hhmmss"), "Backup.odp")
' DRAW
ElseIf oDoc.SupportsService("com.sun.star.drawing.DrawingDocument") THEN
    xDoc = array(sSuffix, format(now,"YYYY-MM-DD"), format(now, "hhmmss"), "Backup.odg")
' MATH
ElseIf oDoc.SupportsService("com.sun.star.formula.FormulaProperties") THEN
  xDoc = array(sSuffix, format(now,"YYYY-MM-DD"), format(now, "hhmmss"), "Backup.odf")

Else
	' Fehler abfangen, wenn kein passendes Programm geöffnet ist.
	Msgbox "Es ist ein Fehler aufgetreten" & chr(10) & "Das Programm wird beendet",15
		Exit Sub
END IF

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Dateiname (sFName) aus xDoc zusammensetzen.
' z.B. 
' Zyreon__2018-04-10_135046_Backup.odt
'
' sSuffix = entspricht dem Titel aus den Dokumenteigenschaften
' Datum = _2018-04-10
' Uhrzeit _135046	(13:50:46)
' Präfix = _Backup
' Extension = .odt		(Wird gemäß obige Abfrage [Dokumentyp] ermittelt.
sFName=join(xDoc, "_")
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Speicherung in hier angegebenen Pfad und mti Dateiname (sFName)
sFName ="c:\Sicherungskopien\" & sFName
   datei=sFName
   dateiurl=converttourl(datei)
   odoc=thisComponent
' Speicherung
   odoc.storeasurl(dateiurl,dummy())
End Sub
Nach dem Du das Makro in die Basic-IDE kopiert hast, am besten in die Bibliothek "Standard", hast Du
die Wahl welches Event (Ereignis) Du dem Makro zu weist. D.h. ausführen mittels Symbol,
über einen neuen Menüeintrag, Button, Tastenkombination oder ...
Es geht auch wenn Du das Dokument schließt oder öffnest, usw.

Lese auch die Kommentare im Code.

Noch Fragen?

Gruß
Faol
Gruß
Faol
⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒
Win.10 Prof. (x64) • AOO 4.1.5
⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐⇐

Zyreon
Beiträge: 5
Registriert: Do, 05.04.2018 16:37

Re: Calc Datei mit Uhrzeit Speichern und Schließen

Beitrag von Zyreon » Mo, 16.04.2018 11:12

Hallo Faol,

Vielen Dank ich habe erst heute gemerkt das bereits die zweite Seite angefangen wurde :P.

Ich teste das Makro heute noch.

die Zeilen ' sind nur Infozeilen und sollte ich bestimmt rauslöschen oder kann ich diese stehen lassen?


MfG Zy

Gast

Re: Calc Datei mit Uhrzeit Speichern und Schließen

Beitrag von Gast » Mo, 16.04.2018 18:18

Hallo,
die Zeilen ' sind nur Infozeilen und sollte ich bestimmt rauslöschen oder kann ich diese stehen lassen?
Diese Zeilen sind für gewöhnlich Informationen, bzw. Kommentare und dienen dazu,
sich auch noch nach Jahren nachlesen zu können was in diesem Code vorgeht.
Somit besser nicht löschen.
INFO:
Hochkomma und das Wort REM bezeichnen Kommentare.
Diese werden dann bei Ausführung des Makros von der Basic-IDE ignoriert.

Gruß
Faol

Antworten