PDF-Export-Makro, Export-Button überspringen

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

Moderator: Moderatoren

oka
Beiträge: 2
Registriert: Sa, 29.10.2005 18:18
Wohnort: Zürich
Kontaktdaten:

PDF-Export-Makro, Export-Button überspringen

Beitrag von oka »

Hallo,
habe mit dem Makrorecorder ein kleines Script aufgenommen und es funktioniert prächtig,

Code: Alles auswählen

sub test
rem define variables
dim document   as object
dim dispatcher as object
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(3) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///G:/test/test.pdf"
args1(1).Name = "FilterName"
args1(1).Value = "calc_pdf_Export"
args1(2).Name = "FilterData"
args1(2).Value = Array(Array("UseLosslessCompression",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("Quality",0,90,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("ReduceImageResolution",0,false,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("ExportNotes",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("UseTransitionEffects",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("IsSkipEmptyPages",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("FormsType",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),_
Array("Selection",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE))
args1(3).Name = "SelectionOnly"
args1(3).Value = true
dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 1, args1())
end sub
allerdings erscheint jedesmal das "PDF-Optionen"-Fenster auf dem ich auf <Exportieren> klicken muss.
Gibt es eine Möglichkeit das Script so abzuändern, dass man nichts mehr drücken muss, bzw. das "PDF-Optionen"-Fenster gar nicht mehr erscheint?

Habe schon diverse Abänderungen im Script versucht, ohne Erfolg.
Vielleicht gibt mir hier jemand einen Tipp.

Mfg Oski
OO2.0.2 ¦ XPpro SP2 ¦ jre15.0_0.6
Bin kein Programmierer, habe um so mehr Freude wenn mir auf dem Compi trotzdem was gelingt.
oka
Beiträge: 2
Registriert: Sa, 29.10.2005 18:18
Wohnort: Zürich
Kontaktdaten:

Beitrag von oka »

Hab die Lösung gefunden. Vielleicht interessiert es ja sonst noch jemanden.

Anstatt:

Code: Alles auswählen

dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 1, args1())
Das <ExportToPDF> zu <ExportDirectToPDF> ändern.

Code: Alles auswählen

dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 1, args1())
War wohl zu einfach für Euch mir diesen Tipp zu geben.

Oski
OO2.0.2 ¦ XPpro SP2 ¦ jre15.0_0.6
Bin kein Programmierer, habe um so mehr Freude wenn mir auf dem Compi trotzdem was gelingt.
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: PDF-Export-Makro, Export-Button überspringen

Beitrag von Jörg »

Hallo,
ich habe mir das Makro mal kopiert und es funktioniert im Grunde. Allerdings hätte ich ein paar Dinge geändert.
Das Makro speichert mir zwar das aktuelle Tabellenblatt, gibt mir aber als Dateinamen den Namen der Mappe aus.
Bsp. Mappe heißt Kundendatei ; Tabellenblatt heißt Monatsumsatz Jan.--> Dateiname: Kundendatei.pdf
Wie könnte ich erreichen, daß jeweils der Name des Tabellenblattes als Dateiname übernommen wird.
Mein Makro ist bis auf args1(0).Value = "file:///G:/test/test.pdf" identisch . Bei mir steht:args1(0).Value = "file:///D:/openoffice/Monatsabrechnungen/2014/Kundendatei%20TB.pdf".

Hoffe es kann mir jemand helfen.

Gruß Jörg
P.S. Wie fügt man hier ein Makro ein? So wie es oka gemacht hat.
Gruß Jörg

Win 10 Pro AOO 4.1.15
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: PDF-Export-Makro, Export-Button überspringen

Beitrag von F3K Total »

Moin
Jörg hat geschrieben:P.S. Wie fügt man hier ein Makro ein? So wie es oka gemacht hat.
-> Indem man den Text zwischen Code-Tags setzt, siehe Knöpfe über dem Editierfenster.
zum Auslesen des Tabellenblattnamens:

Code: Alles auswählen

Sub Main
   sTabName = Thiscomponent.currentcontroller.activesheet.name
   msgbox sTabName
End Sub
Gruß R
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: PDF-Export-Makro, Export-Button überspringen

Beitrag von Jörg »

Hallo F3K,
vielen Dank für die schnelle Reaktion. Leider Funktioniert das noch nicht so, wie ich das mir vorstelle. An welcher Stelle muß ich Deinen Code einfügen, damit ich den richtigen Dateinamen im Ordner habe."file:///D:/openoffice/Monatsabrechnungen/2014/Kundendatei.pdf" Als Dateiname erscheint immer noch Kundendatei.pdf. Es soll aber der jeweils aktuelle Name des Tabellenblattes als Dateiname gespeichert werden, anstatt "Kundendatei"
Hab mal das Makro eingefügt. Deinen Text hab ich möglicherweise an die falsche Stelle gesetzt. :?
Gruß Jörg

Code: Alles auswählen

sub PDF
rem
sTabName = Thiscomponent.currentcontroller.activesheet.name
msgbox sTabName

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(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///D:/openoffice/Monatsabrechnungen/2014/Kundendatei.pdf"
args1(1).Name = "FilterName"
args1(1).Value = "calc_pdf_Export"
args1(2).Name = "FilterData"
args1(2).Value = Array(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,false,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,true,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,true,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),Array("Selection",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE))

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

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$A$3"

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

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Sel"
args3(0).Value = true

dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args3())

rem ----
Gruß Jörg

Win 10 Pro AOO 4.1.15
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: PDF-Export-Makro, Export-Button überspringen

Beitrag von F3K Total »

Hi,
naja, da wo der Name steht wird statt Kundendatei die Variable sTabName eingesetzt:

Code: Alles auswählen

args1(0).Value = "file:///D:/openoffice/Monatsabrechnungen/2014/" & sTabName & ".pdf"
Die Zeile mit der Messagebox kannst du wieder herausnehmen.

Code: Alles auswählen

msgbox sTabName
Gruß R
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

(Gelöst)Re: PDF-Export-Makro, Export-Button überspringen

Beitrag von Jörg »

Hallo F3K,
danke Dir. Ich hatte schon die Ahnung, daß ich das da reinsetzen muß. Hatte es auch schon probiert. Aber da ich mich sowenig in der VBA auskenne, hab ich ohne
" und & eingefügt.
Es funktioniert jetzt prima.Die msg box laß drin.
Vielen Dank und eine gute Zeit.

Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: PDF-Export-Makro, Export-Button überspringen

Beitrag von F3K Total »

Moin,
Jörg hat geschrieben:Aber da ich mich sowenig in der VBA auskenne ...
Hier ein Zitat aus dem englischen Forum:
There are several macro languages in OOo, but none of them is called Visual Basic or VB(A)! Please call it OOo Basic, Star Basic or simply Basic.
Gruß R
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: PDF-Export-Makro, Export-Button überspringen

Beitrag von Jörg »

Oh Mann sorry,
bin ich wohl ins Fettnapf getreten.
Bis vor ein paar Wochen wußte ich nicht einmal, was Makros sind usw.
Ich will mir nur mit ooo was zusammenbauen, damit ich nach BS Wechsel wieder ordentlich arbeiten kann.
Also es tut mir sowas von leid. :lol:
Gruß Jörg

Win 10 Pro AOO 4.1.15
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: PDF-Export-Makro, Export-Button überspringen

Beitrag von Jörg »

Hallo,
das Makro funktioniert prima. Vielen Dank für die Hilfe. Ich hätte da noch einen kleinen Wunsch.
Nachdem alles erfolgreich als pdf gespeichert ist, benenne ich meine Tabelle um. Schön wäre es, wenn sich abschließend eine box öffnen würde, in der ich den neuen Tabellennamen eingebe und mit ok abschließe. Das ganze ans Ende des Makros gesetzt.
Dann wäre die Sache rund.
Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
Antworten