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... :wink:

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