Hallo Forummitglieder,
ich versuche einen häufugen Arbeitsschritt zu automatisieren:
Gesamtes Dokument (Total.ods) unter seinem jetzigen Namen aktualisiert speichern + 2 der Tabellen des Dokuments als .pdf mit verschiedenen Namen (Total.pdf und Total-Mo.pdf) speichern
Ich habe schon einige VB-Makros aus dem Netz getestet, aber keines macht genau das, was ich gerne hätte. Kennt ihr Makros, die so etwas können - oder auch nur einen Teil meines Arbeitsschrittes erledigen?
Danke für die Antworten und viele Grüße,
Jens
Nach oben
🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Makro, welches bestimmte Tabellen als pdf speichert
Re: Makro, welches bestimmte Tabellen als pdf speichert
Hallo,
hier mal eine Variante (ich hoffe, die Kommentare sind ausreichend)
hier mal eine Variante (ich hoffe, die Kommentare sind ausreichend)
Code: Alles auswählen
sub pdf_einzelne_Tabellen
odoc=thiscomponent
'aktuellen Pfad und Name in Array auslesen
'letztes Element enthält den Dateinamen
aPfad=split(oDoc.Url,"/")
'Speichern des Dokuments (wenn schon mal unter dem Namen gespeichert)
oDoc.store
'alternativ: Speichern unter Dateiname, dann die folgenden Zeilen entkommentieren
'dateiname="Total.ods"
'aPfad(ubound(aPfad))=dateiname
'url_neu=convertToUrl(join(aPfad,"/"))
'Dim dummy()
'odoc.storeAsURL(url_neu, dummy)
'pdf-Export
'Tabellennamen der zu exportierenden Tabellen und zugehöriger Dateiname -> entsprechend anpassen
aTabellen=Array(Array("Tabelle1", "Total.pdf"), Array("Tabelle2","Total-Mo.pdf"))
'Exportparameter vorbereiten
Dim arg(2) as new com.sun.star.beans.PropertyValue
arg(0).Name = "URL"
'Value später
arg(1).Name = "FilterName"
arg(1).Value = "calc_pdf_Export"
dim aFilterData(0) as new com.sun.star.beans.PropertyValue
aFilterData(0).Name = "Selection"
'Value später
arg(2).Name = "FilterData"
'Value später
for i=0 to ubound(aTabellen)
'Container für Mehrfachbereiche erstellen
obereiche = odoc.createInstance("com.sun.star.sheet.SheetCellRanges")
'Zugriff auf Tabelle
oTab=odoc.sheets.getbyname(aTabellen(i)(0))
'zur Sicherheit eine Unterscheidung, falls irgendwo Druckbereiche definiert sind
aDruckbereiche=oTab.printareas
if ubound(aDruckbereiche)<0 then
obereiche.addRangeAddress(oTab.getRangeAddress, 0) 'ganze Tabelle
else
for k=0 to ubound(aDruckbereiche)
obereiche.addRangeAddress(aDruckbereiche(k), 0) 'festgelegte Druckbereiche
next
end if
'Exportparamter vervollständigen
aPfad(ubound(aPfad))=aTabellen(i)(1)
arg(0).Value =convertToUrl(join(aPfad,"/"))
aFilterData(0).Value = obereiche
arg(2).Value = aFilterData()
'Export als pdf
odoc.storeToUrl(arg(0).value,arg())
next
end sub
Gruß,
mikele
mikele
Re: Makro, welches bestimmte Tabellen als pdf speichert
Danke mikele,
funktioniert gut. Ich habe es noch leicht angepasst, sodass es für die PDF-Dateien, den Namen des aktuellen Dokumentes + Extraendung verwendet:
Wie setzt man den Thread auf "gelöst" ?
Danke und viele Grüße,
Jens
funktioniert gut. Ich habe es noch leicht angepasst, sodass es für die PDF-Dateien, den Namen des aktuellen Dokumentes + Extraendung verwendet:
Code: Alles auswählen
REM ***** BASIC *****
sub sapdf
odoc=thiscomponent
'aktuellen Pfad und Name in Array auslesen
'letztes Element enthält den Dateinamen
aPfad=split(oDoc.Url,"/")
aName=split(aPfad(UBound(aPfad)),".")
'die Namen der pdf-Dateien sollen dem des Dokumentes entsprechen bzw. +"-Mo" lauten
fName=aName(LBound(aName)) + ".pdf"
fName2=aName(LBound(aName)) + "-Mo.pdf"
'Speichern des Dokuments (wenn schon mal unter dem Namen gespeichert)
oDoc.store
'alternativ: Speichern unter Dateiname, dann die folgenden Zeilen entkommentieren
'dateiname="Total.ods"
'aPfad(ubound(aPfad))=dateiname
'url_neu=convertToUrl(join(aPfad,"/"))
'Dim dummy()
'odoc.storeAsURL(url_neu, dummy)
'pdf-Export
'Tabellennamen der zu exportierenden Tabellen und zugehöriger Dateiname -> entsprechend anpassen
aTabellen=Array(Array("Druck", fName), Array("DruckMo",fName2))
'Exportparameter vorbereiten
Dim arg(2) as new com.sun.star.beans.PropertyValue
arg(0).Name = "URL"
'Value später
arg(1).Name = "FilterName"
arg(1).Value = "calc_pdf_Export"
dim aFilterData(0) as new com.sun.star.beans.PropertyValue
aFilterData(0).Name = "Selection"
'Value später
arg(2).Name = "FilterData"
'Value später
for i=0 to ubound(aTabellen)
'Container für Mehrfachbereiche erstellen
obereiche = odoc.createInstance("com.sun.star.sheet.SheetCellRanges")
'Zugriff auf Tabelle
oTab=odoc.sheets.getbyname(aTabellen(i)(0))
'zur Sicherheit eine Unterscheidung, falls irgendwo Druckbereiche definiert sind
aDruckbereiche=oTab.printareas
if ubound(aDruckbereiche)<0 then
obereiche.addRangeAddress(oTab.getRangeAddress, 0) 'ganze Tabelle
else
for k=0 to ubound(aDruckbereiche)
obereiche.addRangeAddress(aDruckbereiche(k), 0) 'festgelegte Druckbereiche
next
end if
'Exportparamter vervollständigen
aPfad(ubound(aPfad))=aTabellen(i)(1)
arg(0).Value =convertToUrl(join(aPfad,"/"))
aFilterData(0).Value = obereiche
arg(2).Value = aFilterData()
'Export als pdf
odoc.storeToUrl(arg(0).value,arg())
next
end sub
Danke und viele Grüße,
Jens
An 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.