Der Betreff sagt fast alles: Ich möchte dem (schon vorhandenen) Dateinamen der geöffneten LO-Datei ein Datum voranstellen und nach Ausführung des Makros einfach unter dem neuen Dateinamen weiterarbeiten. Möglichst für Writer- und Calc-Dateien, universell.
Bisher habe ich das hier, zum Teil zusammengeklaut aus anderen Forumsbeiträgen:
Code: Alles auswählen
Sub DatumzuDateiname
GlobalScope.BasicLibraries.LoadLibrary("Tools")
dim oDoc as Object, msg1 as string, msg2 as string
dim n as integer, sPfad as string, sURL as string, sDateiname as string, sNeuname as string, sDatum as string, sDatumneu as string
' Dim mFileProperties(0) As New com.sun.star.beans.PropertyValue
dim dummy()
msg1 = "Sorry, das Dokument hat noch keine URL!"
msg2 = "Bitte erst einmal speichern"
oDoc = thisComponent
if oDoc.url = "" then
msgbox (msg1 & chr(13) & msg2, 16, "Fehler")
exit sub
end if
sDateiname = FileNameOutOfPath(oDoc.URL)
msgbox sDateiname
sDatum = date()
sDatumneu = Format(sDatum, "YYYY-MM-DD")
msgbox sDatumneu
sNeuname = sDatumneu + " " + sDateiname
msgbox sNeuname
sPfad = oDoc.url
msgbox sPfad
sURL = convertToURL(sNeuname)
msgbox sURL
' mFileProperties(0).Name = "Overwrite"
' mFileProperties(0).Value = True
' oDoc.storeAsUrl(sURL, mFileProperties())
oDoc.storeAsUrl(sURL, dummy())
End Sub
Die letzte Messagebox enthält wohl das Problem:
Der Pfad sollte so aussehen wie der alte Pfad, tut er aber nicht. Muß ich jetzt den neuen Pfad irgendwie aus altem Pfad und neuem Dateinamen zusammensetzen, oder kann ich nicht einfach in dem Verzeichnis, wo die Datei ist, nur mit den Dateinamen arbeiten?file:///2023-08-11%20Unbenannt%202.odt
Am liebsten sollte das Makro unabhängig vom Speicherort der Datei funktionieren.
Ich bekomme jedenfalls die Fehlermeldung:
Zu dieser Fehlermeldung finde ich per Google nichts Hilfreiches. Was also tun?BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.task.ErrorCodeIOException
Message: SfxBaseModel::impl_store <file:///2023-08-11%20Unbenannt%202.odt> failed: 0xc10(Error Area:Io Class:Write Code:16).
Gruß
Freischreiber