Drucken und pdf erzeugen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Drucken und pdf erzeugen

Re: Drucken und pdf erzeugen

von chrwel » Mo, 21.03.2016 14:34

Danke Stephan.
Gelesen hatte ich da schon - aber eben nicht verstanden.
Werde mich da etwas vertiefen ...
Mit dem Löschen komme ich erstmal eine ganze Ecke weiter ...

Re: Drucken und pdf erzeugen

von Stephan » So, 20.03.2016 10:35

1. Gibt es einen Befehl, womit ich bei Start der Arbeitsmappe alle Druckbereiche in allen Tabellen löschen kann?
per Makro geht das z.B. so:

Code: Alles auswählen

Sub Druckbereiche_loeschen()
	tc = ThisComponent
	For i = 0 To tc.Sheets().Count - 1
		tc.Sheets(i).setPrintAreas(Array())
	Next i
End Sub
3. Wie erfolgt der Ausdruck ohne das Druckfenster?
siehe "13.15.2. Tabellendokumente drucken" in:
https://www.uni-due.de/~abi070/count.ph ... eutsch.pdf

z.B.:

Code: Alles auswählen

Sub PrintSpreadsheetAreas
  Dim oRanges(1) As New com.sun.star.table.CellRangeAddress
  oRanges(0).Sheet = 0 
  oRanges(0).StartColumn = 0 : oRanges(0).StartRow = 0 'A1
  oRanges(0).EndColumn = 3   : oRanges(0).EndRow = 4   'D5
  
  oRanges(1).Sheet = 0 
  oRanges(1).StartColumn = 0 : oRanges(1).StartRow = 8 'A9
  oRanges(1).EndColumn = 3   : oRanges(1).EndRow = 10  'D11
  
  ThisComponent.CurrentController.getActiveSheet().setPrintAreas(oRanges())
  ThisComponent.print(Array())
End Sub
Gruß
Stephan

Drucken und pdf erzeugen

von chrwel » Sa, 19.03.2016 19:23

Hallo zusammen,
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())

Danke für Hilfe.
Christian

Nach oben