Writer: Makro Dateiname aus Zelle + PDF Export

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

Moderator: Moderatoren

hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

Writer: Makro Dateiname aus Zelle + PDF Export

Beitrag von hylli »

Hi,

ich habe hier eine Lösung gefunden, wie man per Makro den Dateinamen aus einer Zelle generiert und die Datei als Dokument speichert:

Code: Alles auswählen

Sub Speichern_als_Zellname

oDoc = thisComponent
rem Zugriff auf Tabelle1
otable=oDoc.Texttables.Tabelle1
rem Zugriff auf Zelle A1
ocell=otable.getCellbyName("A1")
rem alternativ geht auch diese Methode:
rem ocell =otable.getCellbyposition(0,0)
rem Zellinhalt auslesen
oString = ocell.String
rem in den Pfad einbauen
datei = "C:/Users/BeFu/Documents/RG/"& oString &".odt"
dateiurl = converttourl(datei)
rem speichern
rem odoc.storeAsurl(dateiurl,Array())'Ursprungsdatei wird umbenannt
odoc.storeTourl(dateiurl,Array())'Ursprungsdatei bleibt erhalten

End Sub
Was müsste ich wie ändern, damit ein PDF mit dem aus der Zelle erzeugten Dateinamen gespeichert wird?

Hylli
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
hylli
*******
Beiträge: 1672
Registriert: Mi, 22.02.2006 19:37

Re: Writer: Makro Dateiname aus Zelle + PDF Export

Beitrag von hylli »

OK, eine funktionierende Lösung gefunden:

Code: Alles auswählen

Sub Speichern_als_Zellname

Dim datei as String
oDoc = thisComponent
rem Zugriff auf Tabelle1
otable=oDoc.Texttables.Tabelle2
rem Zugriff auf Zelle A1
ocell=otable.getCellbyName("B3")
rem alternativ geht auch diese Methode:
rem ocell =otable.getCellbyposition(0,0)
rem Zellinhalt auslesen
oString = ocell.String
rem in den Pfad einbauen
datei = "file:///P:/Dokumentation/"& oString &".pdf"
rem dateiurl = converttourl(datei)
rem speichern
rem odoc.storeAsurl(dateiurl,Array())'Ursprungsdatei wird umbenannt
rem odoc.storeTourl(dateiurl,Array())'Ursprungsdatei bleibt erhalten
'URL-String für das Speichern der PDF-Datei generieren

'Speicherbefehl PDF-Datei
Dim pdfProperties(1) as new com.sun.star.beans.PropertyValue
pdfProperties(0).Name = "FilterName"
pdfProperties(0).Value = "writer_pdf_Export"
ThisComponent.storeToURL( datei, pdfProperties() )

'Messagebox aufrufen   
msgbox    datei

End Sub
Ist eine Mischung aus bereits verlinktem Makro + diesem hier:
viewtopic.php?p=139411#p139411

Falls es da Verbesserungspotenzial geben sollte, wäre ich natürlich für Vorschläge offen und dankbar.

Hylli
Ein Dankeschön für eine Lösung tut nicht weh!
Wer eine Lösung selbst findet, sollte die für die Nachwelt auch posten!

Geschäftlich: LibreOffice 6.0.x ("Still") unter Windows 10 64bit
Privat: LibreOffice 6.0.x ("Still") unter Linux Mint 19.x Cinnamon 64bit
Antworten