Hallo JulianLE
Unter LO ist das Leider nicht so einfach wie unter Word.
Unten habe ich ein Beispiel, wie du das machen kannst.
Allerdings musst du unter Windows auf Grund eines Bugs den Libreoffice eigenen Speichern-Dialog verwenden,
da sonnst der voreingestellte Pfad nicht im Dialog erscheint.
(Extras -> Optionen-> Libreoffice->Allgemein->Häkchen bei "Libreoffice-Dialoge verwenden")
Dieses Makro speichert nur in die Libreoffice eigenen Formate (ODF).
Willst du z.B. in Microsoft Formate speichern, musst du beim Speichern noch einen Filter verwenden.
Hier erstmal der Code
Code: Alles auswählen
Sub saveDocument
Dim sEnding$
Dim Dialogtyp(0)
dim sUrl$ ,sName$
Dim MyDialog
dim dummy()
On error goto Errorhandler
'Überprüfen, ob das dokument schoneinmahl gespeichert wurde.
If 0 = len (thisComponent.getURL)Then
'Falls nicht: überprüfen was es führ ein Dokument ist.
If thisComponent.supportsService("com.sun.star.text.TextDocument") Then
sEnding = ".odt"
elseIf thisComponent.supportsService("com.sun.star.sheet.SpreadsheetDocument") Then
sEnding = ".ods"
elseIf thisComponent.supportsService("com.sun.star.presentation.PresentationDocument") Then
sEnding = ".odp"
elseIf thisComponent.supportsService("com.sun.star.drawing.DrawingDocument") Then
sEnding = ".odg"
elseIf thisComponent.supportsService("com.sun.star.sdb.OfficeDatabaseDocument") Then
sEnding = ".odb"
elseIf thisComponent.supportsService("com.sun.star.formula.FormulaProperties") Then
sEnding = ".odf"
End if
sName = thisComponent.Title & sEnding
Else
sName = thisComponent.Title
End if
'Pfad auswahldialog initialisieren
MyDialog=createunoservice("com.sun.star.ui.dialogs.FilePicker")
DialogTyp(0) =com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_SIMPLE
myDialog.initialize( DialogTyp())
myDialog.displaydirectory=converttourl("c:\")
myDialog.DefaultName = sName
'Dialog ausführen, und überprüfen, ob mit Speichern bestätigt wurde
If MyDialog.execute() = _
com.sun.star.ui.dialogs.ExecutableDialogResults.OK then
' ausgewählter Dateiname
sUrl = MyDialog.Files(0)
'Datei Speichern
ThisComponent.storeAsUrl(sUrl,dummy()) 'storeToUrl
End if
Errorhandler:
End Sub
Gruß Frieder