BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗
[Gelöst]checkbox abfragen und drucken
Re: checkbox abfragen und drucken
nur das aktuelle, bei tabellenauswahl soll schon immer alles der gewählten tabelle gedruckt werden.
Re: checkbox abfragen und drucken
Hallo,
ok - dann wäre folgende Variante möglich
Es werden nacheinander alle in dem Array aufgelisteten Tabellen gedruckt. Alternativ könnte man sie auch über ihre Nummer ansprechen.
Nun müssen noch die Checkboxen besetzt und ausgelesen werden. Vorschlag folgt.
ok - dann wäre folgende Variante möglich
Code: Alles auswählen
Sub Main
Dim args() as New com.sun.star.beans.PropertyValue
oDoc=ThisComponent
oCtrl=oDoc.CurrentController
'Tabellennamen der zu druckenden Tabellen
aTabellen=array("Tabelle1", "Tabelle3")
'jede Tabelle zur aktuellen machen und dann drucken
for i=0 to ubound(aTabellen)
oTab=odoc.sheets.getbyname(aTabellen(i))
oCtrl.setActiveSheet(oTab)
ThisComponent.Print(args())
next
End Sub
Nun müssen noch die Checkboxen besetzt und ausgelesen werden. Vorschlag folgt.
Gruß,
mikele
mikele
Re: checkbox abfragen und drucken
vielen, vielen Dank erstmal, da kann ich wieder ein bisschen herumbasteln.
Re: checkbox abfragen und drucken
und nun mit beispeilhaften Checkboxen
Code: Alles auswählen
Sub Main
Dim args() as New com.sun.star.beans.PropertyValue
Dim aTabellen()
oDoc=ThisComponent
oCtrl=oDoc.CurrentController
'aktuelle Tabelle merken
oTabDruck=oCtrl.ActiveSheet
'Checkboxen auslesen und zu druckende Tabellennamen in Array schreiben
oForm=oTabDruck.Drawpage.Forms(0)
n=0 'Anzahl gewählter Tabellen
for i=o to oForm.count-1
obox=oForm.getbyindex(i)
if obox.supportsservice("com.sun.star.awt.UnoControlCheckBoxModel") then
if obox.state=1 then
ReDim Preserve aTabellen(n)
aTabellen(n)=obox.label
n=n+1
end if
end if
next
'jede Tabelle zur aktuellen machen und dann drucken
for i=0 to ubound(aTabellen)
oTab=odoc.sheets.getbyname(aTabellen(i))
oCtrl.setActiveSheet(oTab)
ThisComponent.Print(args())
next
oCtrl.setActiveSheet(oTabDruck)
End Sub
- Dateianhänge
-
- tabellen drucken per checkbox.ods
- (10.29 KiB) 159-mal heruntergeladen
Gruß,
mikele
mikele
Re: checkbox abfragen und drucken
was mach ich falsch, die Meldung erscheint wenn ich Checkbox1 aktiviere, wenn nicht, passiert nichts.
Re: checkbox abfragen und drucken
mir ist nicht klar wo abgefragt wird , wenn Checkbox1 = true Print Tabelle1, oder Checkbox2 = true Print Tabelle2 usw.
oder muss ich in der jeweiligen Box etwas eingeben was passieren soll wenn sie abgefragt wird.
oder muss ich in der jeweiligen Box etwas eingeben was passieren soll wenn sie abgefragt wird.
Re: checkbox abfragen und drucken
Hallo,
ja ich vergaß noch zu erklären, wie die Dinge zusammengehören.
Die Checkboxen müssen als Bezeichnung den gewünschten Tabellennamen tragen. Bei dir also z. B. "woh7b2"
Im Makro werden in der ersten Schleife
zunächst alle Formularelemente der aktuellen Seite (da ist die wo sich die Checkboxen und die auslösende Schaltfläche befinden) durchlaufen.
Wenn es eine Checkbox ist (.supportsservice("com.sun.star.awt.UnoControlCheckBoxModel")) wird deren Status ausgelesen und wenn der 1 ist (als die Checkbox angewählt), dann wird die Bezeichung der Checkbox (.label) im Array der zu druckenden Tabellennamen abgelegt.
Danach erfolgt der Druck aller Tabellen, deren Namen abgelegt sind. Existiert ein abgelegter Tabellenname nicht, kommt es zu der Fehlermeldung, die du erlebt hast.
Man könnte es natürlich auch in einer Schleife realisieren. Das sähe dann so aus, was durchaus hübscher ist:
ja ich vergaß noch zu erklären, wie die Dinge zusammengehören.
Die Checkboxen müssen als Bezeichnung den gewünschten Tabellennamen tragen. Bei dir also z. B. "woh7b2"
Im Makro werden in der ersten Schleife
Code: Alles auswählen
'Checkboxen auslesen und zu druckende Tabellennamen in Array schreiben
oForm=oTabDruck.Drawpage.Forms(0)
n=0 'Anzahl gewählter Tabellen
for i=o to oForm.count-1
obox=oForm.getbyindex(i)
if obox.supportsservice("com.sun.star.awt.UnoControlCheckBoxModel") then
if obox.state=1 then
ReDim Preserve aTabellen(n)
aTabellen(n)=obox.label
n=n+1
end if
end if
next
Wenn es eine Checkbox ist (.supportsservice("com.sun.star.awt.UnoControlCheckBoxModel")) wird deren Status ausgelesen und wenn der 1 ist (als die Checkbox angewählt), dann wird die Bezeichung der Checkbox (.label) im Array der zu druckenden Tabellennamen abgelegt.
Danach erfolgt der Druck aller Tabellen, deren Namen abgelegt sind. Existiert ein abgelegter Tabellenname nicht, kommt es zu der Fehlermeldung, die du erlebt hast.
Man könnte es natürlich auch in einer Schleife realisieren. Das sähe dann so aus, was durchaus hübscher ist:
Code: Alles auswählen
Sub Main
Dim args() as New com.sun.star.beans.PropertyValue
oDoc=ThisComponent
oCtrl=oDoc.CurrentController
'aktuelle Tabelle merken
oTabDruck=oCtrl.ActiveSheet
'Checkboxen auslesen und zu druckende Tabellennamen in Array schreiben
oForm=oTabDruck.Drawpage.Forms(0)
for i=o to oForm.count-1
obox=oForm.getbyindex(i)
if obox.supportsservice("com.sun.star.awt.UnoControlCheckBoxModel") then
if obox.state=1 then
oTab=odoc.sheets.getbyname(obox.label)
oCtrl.setActiveSheet(oTab)
ThisComponent.Print(args())
end if
end if
next
oCtrl.setActiveSheet(oTabDruck)
End Sub
Gruß,
mikele
mikele
Re: checkbox abfragen und drucken
Hallo, also es druckt jetzt, aber immer nur die erste Seite , also die auf der alle Boxen sind , wenn ich 3 verschiedene auswähle druckt es 3 Seiten, wenn eine dann nur eine, aber immer die gleiche.
Re: checkbox abfragen und drucken
Hallo,
da war der Fehlerteufel aber so was von aktiv.
Anstelle von
muss es natürlich
sein.
da war der Fehlerteufel aber so was von aktiv.
Anstelle von
Code: Alles auswählen
for i=o to oForm.count-1
Code: Alles auswählen
for i=0 to oForm.count-1
Gruß,
mikele
mikele
Re: checkbox abfragen und drucken
Ich trau es mich kaum zu schreiben aber keine Änderung zu bemerken.