makro erweitern

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

Moderator: Moderatoren

martin11
*****
Beiträge: 237
Registriert: Do, 30.03.2017 16:07

makro erweitern

Beitrag von martin11 »

Ich habe dieses Makro,
wie kann ich das so erweitern, dass immer das aktuell laufende Dokument eingetragen wird.
Damit diese Meldung ersetzt wird und diese Einstellung erspart wird.
Menü Datei --> Eigenschaften
Register "Beschreibung"
Im Feld "Titel"

Code: Alles auswählen

REM  *****  BASIC  *****
Option Explicit
REM Dieses Makro speichert eine Backupdatei mit Zeitstempel 
REM Hier ggf. den Pfad zur Speicherung der Backup-Datei anpassen
Const sPath="H:\__Back_Libre\"

Sub xBackup
Dim oDoc as Object
Dim xDoc as Variant
Dim sFName as String
Dim sSuffix as String
Dim datei as String
Dim dateiurl as String
Dim dummy()
	' Referenz auf aktuelles Dokument
	oDoc=ThisComponent

' Es muss unter Menü Datei\Eigenschaften
' Register: Beschreibung --> Titel
' der Dateiname (ohne Extension) im Feld Titel eingegeben werden.
' Wenn dieses vergessen wurde startet folgende Messagebox und das Programm wird beendet
If oDoc.DocumentProperties.Title ="" Then
	msgbox "Kein Titel!" & chr(13) & "Bitte fügen Sie einen Titel unter" & chr(13) & _
		"Menü Datei --> Eigenschaften..." & chr(13) & "Register 'Beschreibung' ein!                  " _
				,16, "Dokumenteigenschaften nicht vollständig!"
		Exit sub
Else
	' Auslesen der Dokumenteigenschaft "Titel"
	sSuffix = oDoc.DocumentProperties.Title
End if
'mri oDoc

' geöffneten Dokumententyp ermitteln und Dateiname zusammensetzen:
' Dateiname = Präfix & Datum mit Zeit & Suffix & 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.
	' Erfolgt z.B. von Base geöffnet und vordergründig 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. 
' [Titel aus den Dokumenteigenschaften]__2018-04-10_135046_Backup.odt
'
' Suffix = entspricht dem Titel aus den Dokumenteigenschaften
' Datum = _2018-04-10
' Uhrzeit _135046	(13:50:46)
' Praefix = _Backup
' Extension = .odt		(Wird gemäß obige Abfrage [Dokumentyp] ermittelt.
sFName=join(xDoc, "_")
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Speicherung in hier angegebenen Pfad und mti Dateiname (sFName)
sFName =sPath & sFName
   datei=sFName
   dateiurl=converttourl(datei)
   odoc=thisComponent
' Speicherung
   odoc.storeasurl(dateiurl,dummy())
End Sub

Dateianhänge
Titel_Eingeben.jpg
Titel_Eingeben.jpg (9.53 KiB) 2659 mal betrachtet
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: makro erweitern

Beitrag von Toxitom »

Hallo Martin,

mach doch einfach, was das Makro von Dir will - Trage einen Titel für das Dokument ein :)

Alles andere ist doch unsinnig für Dich - wenn Du das Makro weder verstehst (den Code) noch entsprechend ändern kannst.

Eigentlich ist sogar alles im Makro erläutert, mit sehr wenig Erfahrung hättest Du es auch selbst lösen können. Insofern sehe ich es als schwierig, Dir ne Lösung zu nennen - weder kenne ich Deine Wünsche noch Randbedingungen.

Aber bitte:
Der "Titel" des Dokumentes wird in einer Variablen "sSuffix" gespeichert.

Du könntest einfach am Anfang dort einen Wert angeben - dann kommt die Fehlermeldung nicht mehr. Aber ob Dir das wirklich hilft???

Code: Alles auswählen

....
Dim dummy()
' Referenz auf aktuelles Dokument
oDoc=ThisComponent
sSuffix = "meinTest"
.....
VG
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
martin11
*****
Beiträge: 237
Registriert: Do, 30.03.2017 16:07

Re: makro erweitern

Beitrag von martin11 »

Hallo Toxitom
sei bitte nicht so giftig, ich bin Schriftsteller und habe von alledem keine Ahnung.
Das Makro stammt nicht von mir !!!!
Der Dateiname wird aber nicht wirklich übernommen.
Wie muss ich das ändern, damit der Name übernommen wird?
Martin

Code: Alles auswählen

' Dateiname (sFName) aus xDoc zusammensetzen.
' z.B. 
' [Titel aus den Dokumenteigenschaften]__2018-04-10_135046_Backup.odt
'
' Suffix = entspricht dem Titel aus den Dokumenteigenschaften
' Datum = _2018-04-10
' Uhrzeit _135046	(13:50:46)
' Praefix = _Backup
' Extension = .odt		(Wird gemäß obige Abfrage [Dokumentyp] ermittelt.
sFName=join(xDoc, "_")
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Speicherung in hier angegebenen Pfad und mti Dateiname (sFName)
sFName =sPath & sFName
   datei=sFName
   dateiurl=converttourl(datei)
   odoc=thisComponent
' Speicherung
   odoc.storeasurl(dateiurl,dummy())
End Sub

Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: makro erweitern

Beitrag von Stephan »

ersetze in dem von Dir im ersten Beitrag geposteten Makro die Zeile:

Code: Alles auswählen

sSuffix = oDoc.DocumentProperties.Title
durch:

Code: Alles auswählen

sSuffix = "meinTest"

oder belasse die Zeile wie sie ist und ändere über Datei-Eigenschaften im Register "Eigenschaften" den Eintrag für "Titel"



Gruß
Stephan
martin11
*****
Beiträge: 237
Registriert: Do, 30.03.2017 16:07

Re: makro erweitern

Beitrag von martin11 »

Danke Stephan,
klappt prima.
Marin
Antworten