von Toxitom » Mi, 28.09.2005 17:18
Hallo teakay,
Paule hat dir ja schon zum ersten Teil deiner Frage eine Antwort gegeben. Aber nochmal zum Prinzip:
Ist in Calc kein Druckbereich definiert, werden immer alle benutzten Tabellen ausgedruckt - vollständig. Ist jedoch nur ein Druckbereich (oder eben mehrere) definiert, wird nur dieser/diese Bereich/e ausgedruckt.
Dieses Prinzip brauchst du auch für das Makro. Du musst zunächst alle Druckbereiche löschen, dann den neuen Druckbereich setzen, und dann das Dokument ausdrucken. Das Makro könnte wie folgt aussehen:
Code: Alles auswählen
sub BereichDrucken(oDrBereich, nSheet)
Dim aDruckbereich(0) 'Array zur Aufnahme des Druckbereiches
oSheet = thisComponent.sheets(nSheet)
aDruckbereich(0) = oDrBereich
oSheet.setPrintAreas(aDruckbereich())
thisComponent.print() 'druckt das aktuelle Dokument
REM hier könnte man jetzt noch den Druckbereich wieder löschen
end sub
Die Funktion erwartet einen Druckbereich als RangeAddress-Objekt sowie den Index des Tabellenbalttes (nSheet). Du brauchst also noch für jeden Button auf den Tabellenbalättern eine eigene Funktion, welche diese Daten liefert. Beispiel für zweite Tabelle (index 1) und den Druckbereich A1:m100:
Code: Alles auswählen
Sub Seite2drucken
oSheet = thisComponent.sheet(1)
oDrBereich = oSheet.getCellRangeByName("A1:M100").rangeAddress
BereichDrucken(oDrBereich, 1)
end sub
Und das für alle anderen Buttons ähnlich.
Ich hoffe, es hilft.
Gruss
Thomas
Hallo teakay,
Paule hat dir ja schon zum ersten Teil deiner Frage eine Antwort gegeben. Aber nochmal zum Prinzip:
Ist in Calc kein Druckbereich definiert, werden immer alle benutzten Tabellen ausgedruckt - vollständig. Ist jedoch nur ein Druckbereich (oder eben mehrere) definiert, wird nur dieser/diese Bereich/e ausgedruckt.
Dieses Prinzip brauchst du auch für das Makro. Du musst zunächst alle Druckbereiche löschen, dann den neuen Druckbereich setzen, und dann das Dokument ausdrucken. Das Makro könnte wie folgt aussehen:
[code]
sub BereichDrucken(oDrBereich, nSheet)
Dim aDruckbereich(0) 'Array zur Aufnahme des Druckbereiches
oSheet = thisComponent.sheets(nSheet)
aDruckbereich(0) = oDrBereich
oSheet.setPrintAreas(aDruckbereich())
thisComponent.print() 'druckt das aktuelle Dokument
REM hier könnte man jetzt noch den Druckbereich wieder löschen
end sub[/code]
Die Funktion erwartet einen Druckbereich als RangeAddress-Objekt sowie den Index des Tabellenbalttes (nSheet). Du brauchst also noch für jeden Button auf den Tabellenbalättern eine eigene Funktion, welche diese Daten liefert. Beispiel für zweite Tabelle (index 1) und den Druckbereich A1:m100:
[code]
Sub Seite2drucken
oSheet = thisComponent.sheet(1)
oDrBereich = oSheet.getCellRangeByName("A1:M100").rangeAddress
BereichDrucken(oDrBereich, 1)
end sub[/code]
Und das für alle anderen Buttons ähnlich.
Ich hoffe, es hilft.
Gruss
Thomas