Seite 1 von 1
Calc ignoriert Druckereinstellunges des Makros
Verfasst: Mo, 07.11.2005 12:46
von Hago
Hallo,
ich habe ein Formular mit einem Schalter, der beim Auslösen den Druckvorgang einleiten soll. - Tut er auch, aber nicht, wie ich will.
Ich habe eingestellt, dass nur die Auswahl gedruckt werden soll, die zuvor erzeugt wird. Er druckt aber alles.
So sieht der Code jetzt aus:
Code: Alles auswählen
dim num as long
oDoc = ThisComponent
oSheet = oDoc.sheets(0)
oZell = oSheet.getCellByPosition(1,7)
num = val(oZell.string)+11
oZellRange = oSheet.getCellRangeByName("$A$7:$J$"&num)
oDoc.CurrentController.Select(oZellRange)
dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Copies"
args2(0).Value = 1
args2(1).Name = "Selection"
args2(1).Value = true
args2(2).Name = "Collate"
args2(2).Value = false
oDoc.Print(args2())
Weiß mir da jemand Rat?
Wenn ich von Hand im Druckermenü "Auswahl" aktiviere, geht übrigens alles wie gewünscht.
Gruß, Hago
Verfasst: Mo, 07.11.2005 13:36
von Paule
Code: Alles auswählen
sub drucken
dim num as long
oDoc = ThisComponent
oSheet = oDoc.sheets(0)
oZell = oSheet.getCellByPosition(1,7)
num = val(oZell.string)+11
oZellRange = oSheet.getCellRangeByName("$A$7:$J$"&num)
oDoc.CurrentController.Select(oZellRange)
' nehme an das Dokument hat nun alle Einstellung und es soll nur noch ' gedruckt werden
dim dummy()
thiscomponent.print(dummy())
end sub
So wird alles was in der Seitenansicht sichtbar ist gedruckt, kannst natürlich auch einfach den Druckbereich festlegen...
grüße
Paule
Verfasst: Mo, 07.11.2005 14:10
von Hago
Hallo Paule,
das macht aber in seiner Wirkung gar keinen Unterschied zu dem, was ich schon hatte.
Ich möchte
nur die Auswahl drucken.
Ich habe nun versucht, einen Druckbereich festzulegen (einen ähnlichen Code habe ich in einem Forenbeitrag gefunden):
Code: Alles auswählen
oDoc = ThisComponent
oSheet = oDoc.sheets(0)
oZell = oSheet.getCellByPosition(1,7)
num = val(oZell.string)+11
oZellRange = oSheet.getCellRangeByName("$A$7:$J$"&num)
oCursor = oSheet.createCursorByRange(oZellRange)
oCursor.gotoEndofUsedArea(true)
oAdress = oCursor.RangeAddress
Dim aDruckbereich(0)
aDruckbereich(0) = oAdress
oSheet.setPrintAreas(aDruckbereich())
oDoc.print(aDruckbereich())
Macht aber auch keinen Unterschied, nach wie vor wird einfach alles gedruckt.
Hago
Verfasst: Mo, 07.11.2005 16:38
von Toxitom
Hey Hago,
Macht aber auch keinen Unterschied, nach wie vor wird einfach alles gedruckt.
Wie meinst du das? Was soll denn nicht gedruckt werden? Dein definierter Druckbereich umfasst doch alles? Hmm, außer die Zeilen 1 bis 6, und die werden bei mir auch nicht gedruckt.
Dein Code ist soweit OK, nur im printbefehl brauchst du den aDruckbereich() Array nicht. Die Argumente, die du hier übergeben kannst, sind keine Bereiche. Es wundert mich, dass du hier keinen Fehler bekommst..... nimm einen leeren Array, aber vorher definieren.
Aber: Beim Festlegen des Druckbereiches nutzt du "goToEndOfUsedArea()", was den Cursor zur letzten Zelle des benutzten Bereiches im Tabellenbaltt bringt, und zwar absolut - letzte benutzte Zeile, letzte benutzte Spalte. Jetzt haast du ja alles markiert, und das ist dein Druckbereich. Also ist doch logisch, dass auch alles ausgedruckt wird!
Also, was läuft schief?
Gruss
Thomas
Verfasst: Mo, 07.11.2005 21:54
von Hago
Hallo Thomas,
Aber: Beim Festlegen des Druckbereiches nutzt du "goToEndOfUsedArea()", was den Cursor zur letzten Zelle des benutzten Bereiches im Tabellenbaltt bringt, und zwar absolut - letzte benutzte Zeile, letzte benutzte Spalte.
Danke, das war der richtige Hinweis.
Ich habe jetzt diese Zeile einfach nur weggelassen und schon funktioniert es. Jetzt wird die angegebene oZellRange als Druckbereich benutzt.
Ich hatte das einfach irgendwo abgeschrieben, ohne mir wirklich im Klaren zu sein, was es bewirkt.
Danke - Gruß, Hago