Seite 1 von 1

Makro für PDF Export einer Auswahl

Verfasst: Di, 29.04.2014 22:05
von Benutzer 56446 gelöscht
Hallo,

mich quält gerade das Problem, dass ich bei Calc es nicht gebacken bekomme, in einem Makro nur die akutelle Auswahl als PDF zu speichern, es wird immer das komplette Dokument mit allen Seiten ausgegeben.

Das Makro sieht im Moment so aus:

Code: Alles auswählen

sub PDF_exportieren
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$2:$I$58"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(3) as new com.sun.star.beans.PropertyValue
args2(0).Name = "URL"
args2(0).Value = "file:///Users/Yogi/Dokumente/Info "+"$F$22"+" "+"$B$14"+" .pdf"
args2(1).Name = "FilterName"
args2(1).Value = "calc_pdf_Export"
args2(2).Name = "FilterData"
args2(2).Value = Array(Array("Selection",1,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseLosslessCompression",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Quality",0,90,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ReduceImageResolution",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("MaxImageResolution",0,300,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTaggedPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SelectPdfVersion",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportNotes",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarks",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenBookmarkLevels",0,-1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTransitionEffects",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsSkipEmptyPages",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsAddStream",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EmbedStandardFonts",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FormsType",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportFormFields",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("AllowDuplicateFieldNames",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerToolbar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerMenubar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerWindowControls",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ResizeWindowToInitialPage",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("CenterWindow",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenInFullScreenMode",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("DisplayPDFDocumentTitle",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialView",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Magnification",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Zoom",0,100,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PageLayout",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FirstPageOnLeft",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialPage",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Printing",0,2,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Changes",0,4,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableCopyingOfContent",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableTextAccessForAccessibilityTools",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportLinksRelativeFsys",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PDFViewSelection",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ConvertOOoTargetToPDFTarget",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarksToPDFDestination",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("_OkButtonString",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EncryptFile",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPasswords",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("RestrictPermissions",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPermissionPassword",0,Array(),com.sun.star.beans.PropertyState.DIRECT_VALUE))
args2(3).Name = "SelectionOnly"
args2(3).Value = true

dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args2())


end sub
Die letzten Zeilen mit args2(3).Name = "SelectionOnly" & args2(3).Value = true habe ich manuell hinzugefügt, das habe ich aus einem uralten Thread entnommen, ändert aber leider nichts an dem Exportverhalten. Kann hier jemand helfend zur Hand gehen? Ich wäre ich für einen Lösungsvorschlag dankbar.



Moderation:
Thema von OOo Calc nach OOo Basic und Java verschoben, wo alle Themen zur Basic-Programmierung hingehören.
lorbass, Moderator

Re: Makro für PDF Export einer Auswahl

Verfasst: Di, 29.04.2014 23:26
von F3K Total
Moin,
du bist im falschen Forum, die Frage gehört in OOo Basic und Java
Hier ein Makro, dass funktioniert, trage den Dateispeicherpfad ein, und los.

Code: Alles auswählen

sub S_print_from_current_selection
    dim oPrintareas(0) as new com.sun.star.table.CellRangeAddress
    Dim myProps(0) as New com.sun.star.beans.PropertyValue
    osheet = thiscomponent.currentController.activesheet
    osel = thiscomponent.currentselection
    oPrintareas(0)= osel.RangeAddress
    osheet.setprintareas(oPrintareas)
    myProps(0).Name="FilterName"
    myProps(0).Value = "calc_pdf_Export"
    sUrl = converttourl("C:\Users\<USER>\Desktop\Test.pdf")
    ThisComponent.storetoUrl(sUrl,myProps())
End sub
HTH R

Re: Makro für PDF Export einer Auswahl

Verfasst: Mi, 30.04.2014 16:50
von Benutzer 56446 gelöscht
Danke für die Antwort. Leider kümmert sich auch dein Makro nicht um einen markierten Bereich, sondern gibt wieder die komplette Arbeitsmappe als PDF aus.

Ich sehe gerade, dass es ein Update von OOo auf 4.1 gibt, mal testen, ob das ein spezifischer Fehler in 4.0.1 ist und mit der neuen Version evtl. nicht mehr auftritt.

Re: Makro für PDF Export einer Auswahl

Verfasst: Mi, 30.04.2014 19:30
von F3K Total
Bullshit!
Natürlich gibt das Makro genau den markierten Bereich aus, sowohl mit der Version 4.0.1 als auch mit 4.1.0.!
Habe es mehrfach getestet, und ist auch logisch denn

Code: Alles auswählen

sel = thiscomponent.currentselection
ist genau der markierte Bereich.
Was du da falsch machst, kann ich die nicht sagen,
Versuche mal das angehängte Beispieldokument.
R

Re: Makro für PDF Export einer Auswahl

Verfasst: Mi, 30.04.2014 21:25
von Benutzer 56446 gelöscht
Vielen Dank nochmals für die Hilfe, aber "Bullshit!" ist es nicht, wenn ich sage, dass es nicht funktioniert.

Allerdings muss ich zugeben, dass es mit deiner Arbeitsmappe klappt.

Ich habe nun den Code aus deiner Arbeitsmappe in meine kopiert, eine Markierung gesetzt und: es werden wieder alle Tabellen exportiert.
Was du da falsch machst, kann ich die nicht sagen,
Was ich falsch mache, weiß ich auch nicht, ich habe es wie oben beschrieben gemacht, ich wüsste nicht, wo ich hier einen Fehler eingebaut haben könnte... aber deshalb frage ich ja hier nach.

Gibt es ein Protokoll, in welchem man evtl. den Fehler nachvollziehen könnte?

Re: Makro für PDF Export einer Auswahl

Verfasst: Mi, 30.04.2014 21:29
von F3K Total
Kann es sein, dass du ne Menge Druckbereiche definiert hast?

Re: Makro für PDF Export einer Auswahl

Verfasst: Mi, 30.04.2014 21:32
von Benutzer 56446 gelöscht
Öhm, ja, dass "könnte" sein, um nicht zu sagen: es ist so...

Werde ich gleich mal die Druckbereiche aufheben und nochmals testen.

Re: Makro für PDF Export einer Auswahl

Verfasst: Mi, 30.04.2014 21:38
von Benutzer 56446 gelöscht
Ok, vielen Dank, dass war der Fehler!

Da wäre ich in 100 Jahren nicht dahinter gekommen.

Heißt das, ich darf überhaupt keine Druckbereiche mehr definieren? Na ja, wahrscheinlich kann ich dank deines Makros sogar darauf verzichten...

Re: Makro für PDF Export einer Auswahl

Verfasst: Mo, 12.05.2014 22:01
von Benutzer 56446 gelöscht
Also nochmals vielen Dank, das Makro funktioniert aktuell wie geplant.

Wie müsste ich diesen Bereich umformulieren, wenn ich einen fixen Bereich ausgeben möchte, z. B. von A2:I58?

Code: Alles auswählen

    osheet = thiscomponent.currentController.activesheet
    osel = thiscomponent.currentselection
    oPrintareas(0)= osel.RangeAddress
    osheet.setprintareas(oPrintareas)

Re: Makro für PDF Export einer Auswahl

Verfasst: Mo, 12.05.2014 22:05
von F3K Total
Hi,
versuche mal dies:

Code: Alles auswählen

    osheet = thiscomponent.currentController.activesheet
    oRange = oSheet.getCellRangebyName("A2:I58")
    oPrintareas(0)= oRange.RangeAddress
    osheet.setprintareas(oPrintareas)
HTH R

Re: Makro für PDF Export einer Auswahl

Verfasst: Mo, 12.05.2014 22:08
von Benutzer 56446 gelöscht
Und funzt! Fantastisch, erneut herzlichen Dank!