Seite 1 von 1
Re: mehrer Tabellenblätter per Makro drucken
Verfasst: Mi, 16.11.2011 18:27
von F3K Total
Hi ph2.ael,
hier ein Makro was genau das tut:
Code: Alles auswählen
Sub S_print_multiple_tables
odoc=thiscomponent
osheets=odoc.sheets
ncount=osheets.count
oRanges = odoc.createInstance("com.sun.star.sheet.SheetCellRanges")
'Tabellenblätter finden
for i=0 to nCount-1
if osheets(i).getcellbyposition(0,0).value>0 then 'Wenn A1 größer 0
oRange = osheets(i).getCellRangeByName("A1")
oRanges.addRangeAddress(oRange.RangeAddress, True)
endif
next i
'Tabellenblätter auswählen
oController = odoc.currentcontroller
oController.select(oRanges)
'und drucken
dim printProp() as new com.sun.star.beans.PropertyValue
odoc.print(printProp())
End Sub
Viel Spaß
Gruß R
Re: mehrer Tabellenblätter per Makro drucken
Verfasst: Fr, 18.11.2011 17:33
von F3K Total
Hallo,
genau an dieser Stelle:
if osheets(i).getcellbyposition(0,0).value>0 then
wird geschaut ob das entsprechende Blatt gedruckt werden soll.
Dabei erwartet das Makro einen Zahlenwert (.value), sollte ein Text dort stehen (Formatierung der Zelle beachten) funktioniert es so nicht, dann müsste
value>0 durch string>"" ersetzt werden.
Gruß R
Re: mehrer Tabellenblätter per Makro drucken
Verfasst: Mo, 21.11.2011 08:37
von Stephan
In neueren OOo-Versionen (zumindest in OOo 1.x war das nicht so, wahrscheinlich auch in 2.x nicht) muß das zu druckende blatt immer aktiviert werden um sicherzustellen das der Ausdruck auch bei gesetzter Option (unter Extras-Optionen) 'nur ausgewählte Tabellen drucken' erfolgt. Also ungefähr so:
Code: Alles auswählen
Dim PrintProp(0) as new com.sun.star.beans.PropertyValue
PrintProp(0).Name = "Wait"
PrintProp(0).Value = True
With ThisComponent.Sheets()
For i = 0 To .Count - 1
If .getByIndex(i).getCellRangeByName("A1").Value > 0 Then
ThisComponent.CurrentController.setActiveSheet(.getByIndex(i))
ThisComponent.Print(PrintProp())
End If
Next i
End With
Gruß
Stephan
Re: mehrer Tabellenblätter per Makro drucken
Verfasst: Mo, 21.11.2011 17:04
von F3K Total
Hallo Stephan,
die Version über das aktiveSheet hatte ich auch ausprobiert, gefiel mir nicht, weil so jedes Blatt als einzelner Druckauftrag abgeschickt wird.
Darum habe ich länger danach gesucht, wie mehrere Blätter selektiert werden können.
Bei meiner Variante wird ein Druckauftrag über alle Blätter abgeschickt. Das ist z.B. für eine Durchnummerierung der Seiten von Vorteil.
Bei mir funktioniert es, OOo 3.3, "nur ausgewählte Tabellen drucken" ist angehakt.
Daher kann es eigentlich nicht am ActiveSheet liegen.
Ich hänge meine Datei mal dran, vielleicht könnt ihr es mal ausprobieren?
Gruß R
Re: mehrer Tabellenblätter per Makro drucken
Verfasst: Mo, 21.11.2011 19:54
von Stephan
Hallo R,
die Version über das aktiveSheet hatte ich auch ausprobiert, gefiel mir nicht, weil so jedes Blatt als einzelner Druckauftrag abgeschickt wird.
ja, Letzteres ist tatsächlich so (hat mich nur bisher nicht gestört)
Bei meiner Variante wird ein Druckauftrag über alle Blätter abgeschickt. Das ist z.B. für eine Durchnummerierung der Seiten von Vorteil.
Bei mir funktioniert es, OOo 3.3, "nur ausgewählte Tabellen drucken" ist angehakt.
Daher kann es eigentlich nicht am ActiveSheet liegen.
ja, die letztere Bemerkung stimmt, meine Aussage das das zu druckende Blatt aktiviert sein muß ist falsch
vielleicht könnt ihr es mal ausprobieren?
ich kann bestätigen das es bei mir auch funktioniert
Gruß
Stephan
Re: mehrer Tabellenblätter per Makro drucken
Verfasst: Mo, 21.11.2011 20:04
von F3K Total
Danke!
Beste Grüße von Rik