🙏 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!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

pdf-Export automatisieren (Calc)

Alles zur Programmierung im LibreOffice.
Antworten
MB29
Beiträge: 14
Registriert: Di 25. Jan 2011, 15:10

pdf-Export automatisieren (Calc)

Beitrag von MB29 » Di 13. Mai 2014, 20:18

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

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: pdf-Export automatisieren (Calc)

Beitrag von F3K Total » Di 13. Mai 2014, 22:03

Hi,
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 sub
Viel Erfolg
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

MB29
Beiträge: 14
Registriert: Di 25. Jan 2011, 15:10

Re: pdf-Export automatisieren (Calc)

Beitrag von MB29 » Mi 14. Mai 2014, 07:11

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:

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 sub
Es hat prima geklappt!


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.



Antworten