Hallo,
ich habe mehrere Tabellen in einer Datei, die ich jeweils als einzelne .pdf-Dateien exportieren möchte. Dabei handelt es sich immer um denselben Zellbreich (im Beispiel C3bisG36). Der Name der neuen .pdf-Dateien soll einem bestimmten Zellinhalt entsprechen (im Beispiel C3).
Kann man das automatisieren und ggf. wie?
Gruß und Dank vorab -Mo
🎄 Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! 🎄
❤️ Nur noch wenige Tage, um das Ziel für 2025 zu erreichen. Vielen lieben Dank! ❤️
>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig ihr Wissen teilen.<<
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen Dank!
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
pdf-Export automatisieren (Calc)
Re: pdf-Export automatisieren (Calc)
Hi,
ja das geht, mit folgendem Makro, an vier Stellen musst Du die Daten anpassen (<----)
Viel Erfolg
Gruß R
ja das geht, mit folgendem Makro, an vier Stellen musst Du die Daten anpassen (<----)
Code: Alles auswählen
const SFolderURL = "file:///C:/Users/MaxMustermann/Desktop/" '<--- Speicherordner für PDF-Datein
const sNameCell = "A1"' <------------------------------- Zelle in der der Dateiname steht
const sPrintArea = "C3:G36"'<--------------------------- auszudruckender Bereich
sub Store_to_PDF
Dim myProps(0) as New com.sun.star.beans.PropertyValue
myProps(0).Name="FilterName"
myProps(0).Value = "calc_pdf_Export"
aTab = array("Tabelle1","Tabelle3")'<--------------- Namen der auszugebenden Tabellenblätter kommasepariert
Dim aPrintAreas(0)
oCalc = thisComponent
osheets = oCalc.Sheets
'vorhandene Druckbereiche löschen
for i = 0 to osheets.count - 1
osheet = oSheets(i)
osheet.setPrintAreas(Array())
next i
for i = 0 to ubound(aTab)
oSheet = oCalc.sheets().getByName(aTab(i)) 'Blatt wählen
sFilename = oSheet.getCellRangeByName(sNameCell).string 'Dateiname auslesen
oCellRange = oSheet.getCellRangeByName(sPrintArea)'zu druckender Zellbereich
oAddress = oCellRange.RangeAddress'Zelladressen des zu druckenden Zellbereiches
'neuen Druckbereich setzen
aPrintAreas(0) = oAddress
oSheet.setPrintAreas(aPrintAreas)
sUrl = SFolderURL & sFilename & ".pdf" 'Speicherpfad zusammensetzen
oCalc.storetoUrl(sUrl,myProps()) 'Speichern
oSheet.setPrintAreas(Array())
next i
msgbox ("Es wurden "& (i) &" pdf's erfolgreich exportiert!",64,"pdf - Export")
end subGruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: pdf-Export automatisieren (Calc)
Hallo und guten Morgen!
Zunächst viiiielen Dank für Deine Mühe!
Ich habe Deinen Post bereits gestern Abend gesehen, war aber schon zu müde mich damit auseinander zu setzen.
Ich habe den Code wie folgt angepasst:
Es hat prima geklappt!
Zunächst viiiielen Dank für Deine Mühe!
Ich habe Deinen Post bereits gestern Abend gesehen, war aber schon zu müde mich damit auseinander zu setzen.
Ich habe den Code wie folgt angepasst:
Code: Alles auswählen
const SFolderURL ="file:///D:/Daten/HzKTn/" '<--- Speicherordner für PDF-Datein
const sNameCell = "C3"' <------------------------------- Zelle in der der Dateiname steht
const sPrintArea = "C3:G36"'<--------------------------- auszudruckender Bereich
sub Store_to_PDF
Dim myProps(0) as New com.sun.star.beans.PropertyValue
myProps(0).Name="FilterName"
myProps(0).Value = "calc_pdf_Export"
aTab = array("2951","2952","2953","2954","2955","2956","2957","2851","2852a","2852b","2853","2854","2855","2856a","2856b","28_2950") '<--------------- Namen der auszugebenden Tabellenblätter kommasepariert
Dim aPrintAreas(0)
oCalc = thisComponent
osheets = oCalc.Sheets
'vorhandene Druckbereiche löschen
for i = 0 to osheets.count - 1
osheet = oSheets(i)
osheet.setPrintAreas(Array())
next i
for i = 0 to ubound(aTab)
oSheet = oCalc.sheets().getByName(aTab(i)) 'Blatt wählen
sFilename = oSheet.getCellRangeByName(sNameCell).string 'Dateiname auslesen
oCellRange = oSheet.getCellRangeByName(sPrintArea)'zu druckender Zellbereich
oAddress = oCellRange.RangeAddress'Zelladressen des zu druckenden Zellbereiches
'neuen Druckbereich setzen
aPrintAreas(0) = oAddress
oSheet.setPrintAreas(aPrintAreas)
sUrl = SFolderURL & sFilename & ".pdf" 'Speicherpfad zusammensetzen
oCalc.storetoUrl(sUrl,myProps()) 'Speichern
oSheet.setPrintAreas(Array())
next i
msgbox ("Es wurden "& (i) &" pdf's erfolgreich exportiert!",64,"pdf - Export")
end subAn alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.