ich suche schon stundenlag nach einer eleganten Lösung. Ich habe schon etliche Seiten durchforstet aber kaum was davon verstanden. Leider finde ich zu den print-Fragen nichts, womit ich klar komme. Leider bin ich in der Programmierung hier nicht sonderlich fit. Daher muss ich mir oft mit dem Makrorekorder behelfen.
Ich habe eine Arbeitsmappe mit mehreren Tabellen.
In jeder Tabelle ist in einer Zelle der Druckbereich und der pdf-Filename definiert.
Ich will jeweils nur aus einer Tabelle den pdf exportieren.
Der Druck soll auf den Standard-Printer erfolgen, ohne dass das Auswahlmenü erscheint.
Hier wollte ich noch eine Zelle nehmen und die Anzahl der Ausdrucke ablegen, da je nach Tabelle 1 bis 3 Drucke gebraucht werden.
1. Gibt es einen Befehl, womit ich bei Start der Arbeitsmappe alle Druckbereiche in allen Tabellen löschen kann?
2. Wie erreiche ich, dass für die pdf-Ausgabe nur "Auswahl" aktiv ist ?
(Unter Einstellungen->OpenOfficeCalc->Drucken ist der Haken drin bei "Nur ausgewählte Tabellen drucken)
3. Wie erfolgt der Ausdruck ohne das Druckfenster?
Mein bisheriger Aufbau:
Code: Alles auswählen
rem ------------------------------------------------------------------------------------------------ Function fnActiveTab
Function fnActiveTab () as String ' ermitteln des Names der Aktuellen Tabelle
Dim oDoc As Object
oDoc=StarDesktop.CurrentComponent
fnActiveTab = oDoc.CurrentSelection.Spreadsheet.getName()
end function
rem ------------------------------------------------------------------------------------------------ drucken
sub drucken
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
call fnActiveTab
Dim TABname as String
TABname=fnActiveTab()
Dim Druckabfrage As Integer
Druckabfrage = MsgBox("Soll gedruckt werden?",4 + 64, "Infoabfrage")
if Druckabfrage = 7 then
exit sub
end if
Normaldruck1 = thisComponent.Sheets.getByName(TABname).getCellRangeByName("h96")
Normaldruck2 = Normaldruck1.string
dim Normaldruck(0) as new com.sun.star.beans.PropertyValue
Normaldruck(0).Name = "ToPoint"
Normaldruck(0).Value = Normaldruck2
PDFname1 = thisComponent.Sheets.getByName(TABname).getCellRangeByName("G95")
PDFname = PDFname1.string
Dim oPrintareas(0) as new com.sun.star.table.CellRangeAddress
osheet = thiscomponent.currentController.activesheet
oRange = oSheet.getCellRangebyName(Normaldruck2)
oPrintareas(0)= oRange.RangeAddress
osheet.setprintareas(oPrintareas)
Dim myProps(0) as New com.sun.star.beans.PropertyValue
myProps(0).Name="FilterName"
myProps(0).Value = "calc_pdf_Export"
ThisComponent.storetoUrl(PDFname,myProps())
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, Normaldruck())
dispatcher.executeDispatch(document, ".uno:Print", "", 0, Normaldruck())
dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array())
Christian