🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!

🙏 DANKE >> << DANKE 🙏

>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
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: 2515
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:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.



❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten