Druckbefehl für Dokument in Makro

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: Druckbefehl für Dokument in Makro

Danke!

von sascha11 » Do, 06.04.2006 10:49

Hey!

danke- so geht es!

Danke!

Sascha

von Toxitom » Do, 06.04.2006 08:19

Hey Sascha,

also, das Problem ist immer: Ich poste keine kompletten Lösungen, sondern gebe Hinweise auf den Weg der Lösung. Ich setze dabei immer voraus, dass der Frager selbst zumincest Grundahnung hat und die Lösungen entsprechend weiterentwicklen kann.
Es ist immer schwierig, alles zu posten und detailliert zu beschreiben.
Die Methode print() erwartet eine Argumentenliste (einen Array, der kann auch leer sein). Das habe ich natürlich vorausgesetzt. Genauso, wie oT3 definiert werden muss. Und dann funktioniert der Code natürlich.
Also hier der vollständige, getestete und korrekte Code:

Code: Alles auswählen

Sub DruckenBereiche
	dim arg()
	oDoc = thisComponent
	oT3 = oDoc.sheets(2)
	Dim aDruckbereiche(0)
	oDruckbereich1 = oT3.getCellRangeByName("a1:n50").rangeAddress
	aDruckbereiche(0) = oDruckbereich1
	oT3.setPrintAreas(aDruckbereiche())
	oDoc.print(arg()) 
End Sub
Ich hoffe, es hilft dir jetzt ein wenig weiter.

Gruss
Thomas

so erhalte ich eine andere Fehlermeldung

von sascha11 » Mi, 05.04.2006 14:23

hey!

mit diesem Code erhalte ich die Fehlermeldung
"sequence element is not assignable by given value"
[code]
Dim oDoc as Object
oDoc= ThisComponent
Dim aDruckbereiche(0)
oDruckbereich1 = oT3.getCellRangeByName("a1:n30").rangeAddress
aDruckbereiche(0) = oDruckbereich1
oT3.setPrintAreas(aDruckbereiche())
oDoc.print(aDruckbereiche())
[/code]

Danke!

Sascha

bei google gefunden

von sascha11 » Mi, 05.04.2006 14:02

hi!

habe dieses Script bei google gefunden, wenn ich es aufrufe, crashed allerdings mein Programm ohne Fehlermeldung (nicht mehr ansprechbar).
[code]
Sub Druckbereich_Ein (sSht$, nStC&, nStR&, nEndC&, nEndR&)

'------------------------------------------------------------------

Dim selArea(0) as new com.sun.star.table.CellRangeAddress

Dim oDoc as object

Dim oSheet as object

Dim oSheets

Dim i%

oDoc = Thiscomponent

oSheets = ThisComponent.Sheets

oSheet = ThisComponent.currentSelection.getSpreadsheet()

oSheet.setPrintareas(array())



selArea(0).StartColumn = 1

selArea(0).StartRow = 0

selArea(0).EndColumn = 12

selArea(0).EndRow = 46

oSheet=ThisComponent.currentSelection.getSpreadsheet()

oSheet.setPrintareas(selArea())

oDoc.Print(Array())

End Sub
[/code]

von sascha11 » Mi, 05.04.2006 10:15

Hey!

danke für deine Antwort- ich erhalte, wenn ich diesen Code nehme, danna ber die Fehlermeldung "Arguments len differ!"

[code]
Dim aDruckbereiche(0)
oDruckbereich1 = oT3.getCellRangeByName("a1:n50").rangeAddress
aDruckbereiche(0) = oDruckbereich1
oT3.setPrintAreas(aDruckbereiche())
myDoc.print()
[/code]

myDoc ist so definiert:
[code]
Dim myDoc as Object
myDoc= ThisComponent
[/code]

Wie drucke ich jetzt Tabellenblatt 3?

danke,

Sascha

von Toxitom » Di, 04.04.2006 12:44

Hey Sascha,
gibt es eine Dokumentation dazu?
Sicher. Alle Tabellenblätter unterstützen das Interface com.sun.star.sheet.XPrintAreas , und das findest du beschrieben in der Dokumentation (IDL online oder auch lokal im SDK).
Dort findest du dann Methoden wie getPrintAreas() oder auch setPrintAreas(aListe), wobei du mit letztgenannter die Druckbereiche für Tabellenblätter setzt. Wichtig dabei: Der übergebene Array überschreibt immer alle alten Druckbereiche - also vorher auslesen, und den Array erweitern!

In Kurzform:

Code: Alles auswählen

Dim aDruckbereiche(0)
oDruckbereich1 = oSheet.getCellRangeByName("a1:n50").rangeAddress
aDruckbereiche(0) = oDruckbereich1
oSheet.setPrintAreas(aDruckbereiche())
Gruss
Thomas

wie richte ich die Druckbereiche ein

von sascha11 » Di, 04.04.2006 12:23

wenn ich jetzt Tabelle 3 und 4 drucken möchte, wie kann ich in diesem Beispiel den Druckbereich wählen? muss ich den an eine andere Funktion übergeben? gibt es eine Dokumentation dazu?

von Toxitom » Di, 04.04.2006 12:16

Hey Sascha,
gibt es für ein Dokument eine Printfunktion
Ja, aber nicht für eine Tabelle:

Code: Alles auswählen

oDoc.print()
funktioniert ähnlich, wie wenn du den "Druck-Button" in der Standard-Iconliste betätigst.

Also: Bie Calcdokumenten bedeutet das, du musst vorher Druckbereiche einrichten, willst du nicht alles gedruckt haben. Und natürlich kann man das alles per Makro machen :D

Gruss
Thomas

Druckbefehl für Dokument in Makro

von sascha11 » Di, 04.04.2006 10:41

hey!

gibt es für ein Dokument eine Printfunktion (Makro), z. Bsp.:
Dim oT1 as Objec
oT1=myDoc.sheets(1)
->>> oT1.print()

Danke,

Sascha

Nach oben