Calc ignoriert Druckereinstellunges des Makros

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Hago
****
Beiträge: 135
Registriert: Di, 07.12.2004 16:44

Calc ignoriert Druckereinstellunges des Makros

Beitrag 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
Paule
****
Beiträge: 113
Registriert: Do, 22.09.2005 16:26
Wohnort: Schleswig

Beitrag 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
Hago
****
Beiträge: 135
Registriert: Di, 07.12.2004 16:44

Beitrag 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
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag 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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Hago
****
Beiträge: 135
Registriert: Di, 07.12.2004 16:44

Beitrag 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
Antworten