Seite 1 von 1

pdf-Export automatisieren (Calc)

Verfasst: Di 13. Mai 2014, 20:18
von MB29
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

Re: pdf-Export automatisieren (Calc)

Verfasst: Di 13. Mai 2014, 22:03
von F3K Total
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

Re: pdf-Export automatisieren (Calc)

Verfasst: Mi 14. Mai 2014, 07:11
von MB29
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!