mehrer Tabellenblätter per Makro drucken

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: mehrer Tabellenblätter per Makro drucken

Re: mehrer Tabellenblätter per Makro drucken

von F3K Total » Mo, 21.11.2011 20:04

Danke!

Beste Grüße von Rik

Re: mehrer Tabellenblätter per Makro drucken

von Stephan » Mo, 21.11.2011 19:54

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

von F3K Total » Mo, 21.11.2011 17:04

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
Dateianhänge
print_multiple_sheets.ods
(12.16 KiB) 238-mal heruntergeladen

Re: mehrer Tabellenblätter per Makro drucken

von Stephan » Mo, 21.11.2011 08:37

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

von F3K Total » Fr, 18.11.2011 17:33

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

von F3K Total » Mi, 16.11.2011 18:27

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

Nach oben