Calc: Tabellenblätter auswählen und anschließend drucken

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

MiH
Beiträge: 4
Registriert: Mo, 26.01.2009 12:17

Calc: Tabellenblätter auswählen und anschließend drucken

Beitrag von MiH »

Gibt es eine Möglichkeit, bestimmte Tabellenblätter in Calc per VBA/Basic auszuwählen und diese gewählten Arbeitsblätter dann zu drucken? Ich habe leider noch keinen Ansatz gefunden. :(
MiH
Beiträge: 4
Registriert: Mo, 26.01.2009 12:17

Re: Calc: Tabellenblätter auswählen und anschließend drucken

Beitrag von MiH »

Hallo Nils,
vielen Dank für deine Antwort, doch ich suche den Weg, wie ich deinen beschriebenen Weg per Basic/VBA gehen kann, so dass ich nicht diese 5 Klicks per Hand erledigen muss.
Garfield
Beiträge: 7
Registriert: Fr, 14.11.2008 22:28

Re: Calc: Tabellenblätter auswählen und anschließend drucken

Beitrag von Garfield »

Hallo,

Code: Alles auswählen

sub PrintSheets
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Copies"
args1(0).Value = 1
args1(1).Name = "RangeText"
' Auf den Blätter müssen Druckbereiche definiert sein!
args1(1).Value = "1,3,6" 'Seiten 1,3 und 6
'args1(1).Value = "1-6" 'Seiten 1-6
args1(2).Name = "Collate"
args1(2).Value = false
dispatcher.executeDispatch(document, ".uno:Print", "", 0, args1())
end sub[/
Grüsse
MiH
Beiträge: 4
Registriert: Mo, 26.01.2009 12:17

Re: Calc: Tabellenblätter auswählen und anschließend drucken

Beitrag von MiH »

Leider ging das nicht so wie ich es wollte. Er hat trotz Druckbereich immer nur eine Tabelle gedruckt. Nachdem ich jetzt noch etwas gesucht habe, habe ich folgende Lösung nun im Einsatz:

Code: Alles auswählen

sub btn_print_ok
	dim o_sheets as object
	dim o_file as object
	dim doc   as object
	dim dispatcher as object
	
	o_file 		= thiscomponent
	o_sheets	= o_file.sheets
	doc		   	= o_file.CurrentController.Frame	
	dispatcher 	= createUnoService("com.sun.star.frame.DispatchHelper")

	if o_sheets.getbyname("Einstellungen").isvisible = true then
		o_sheets.getbyname("Einstellungen").isvisible = false
	end if

	dim args(2) as new com.sun.star.beans.PropertyValue
	args(0).Name = "URL"
	args(0).Value = "file:///X:/ORDNER/" & year(now()) & "/" & format(now(),"yyyy-mm") & ".pdf"
	args(1).Name = "FilterName"
	args(1).Value = "calc_pdf_Export"
	args(2).Name = "Overwrite"
	args(2).Value = True

	dispatcher.executeDispatch(doc, ".uno:ExportDirectToPDF", "", 0, args())

	if o_sheets.getbyname("Einstellungen").isvisible = false then
		o_sheets.getbyname("Einstellungen").isvisible = true
	end if	
end sub
Ich verstecke die Tabelle "Einstellungen" drucke das ganze als PDF und danach wird die Tabelle wieder sichtbar gemacht. Funktioniert perfekt und spart arbeit. :)
Antworten