Makro für PDF Export einer Auswahl

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzer 56446 gelöscht

Makro für PDF Export einer Auswahl

Beitrag 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
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro für PDF Export einer Auswahl

Beitrag 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
Benutzer 56446 gelöscht

Re: Makro für PDF Export einer Auswahl

Beitrag 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.
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro für PDF Export einer Auswahl

Beitrag 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
Dateianhänge
Export_current_selection_as_PDF.ods
(14 KiB) 262-mal heruntergeladen
Benutzer 56446 gelöscht

Re: Makro für PDF Export einer Auswahl

Beitrag 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?
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro für PDF Export einer Auswahl

Beitrag von F3K Total »

Kann es sein, dass du ne Menge Druckbereiche definiert hast?
Benutzer 56446 gelöscht

Re: Makro für PDF Export einer Auswahl

Beitrag 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.
Benutzer 56446 gelöscht

Re: Makro für PDF Export einer Auswahl

Beitrag 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...
Benutzer 56446 gelöscht

Re: Makro für PDF Export einer Auswahl

Beitrag 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)
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro für PDF Export einer Auswahl

Beitrag 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
Benutzer 56446 gelöscht

Re: Makro für PDF Export einer Auswahl

Beitrag von Benutzer 56446 gelöscht »

Und funzt! Fantastisch, erneut herzlichen Dank!
Antworten