Dynamisches Array drucken

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

miknoll

Dynamisches Array drucken

Beitrag von miknoll » Fr, 22.12.2017 11:17

Hallo zusammen,
ich habe folgendes Problem:
In einem Dokument mit diversen Tabellen soll nur ein bestimmter Bereich einer Tabelle gedruckt werden. Die entsprechenden Makro-Befehle habe ich hier im Forum gefunden und es klappt alles soweit. Allerdings soll der Druckbereich flexibel sein, da er von einem Wert aus einer anderen Tabelle abhängt.
Konkret: In "Tabelle2" steht in Zelle M32 der Wert für das Ende des zu druckenden Arrays,hier z.B. "B31". Gedruckt werden soll also der Bereich "A1:B31" in "Tabelle1". Irgendwie kriege ich die Syntax einfach nicht auf die Reihe. Kann mir bitte jemand helfen? Danke schön!

Mein bisheriges Ergebnis:

Dim Dok as Object
Dim Tab as Object
Dim Bereich as Object
Sub DruckenFELD()

'------ oben ist alles ok --------------------------

oSheet = thisComponent.sheets().getByName("Tabelle2") 'in dieser Tabelle steht der zu ermittelnde Wert
Zellname = oSheet.getCellRangeByName("M32").string 'das ist die Zelle, in der der Wert steht (also im Bsp. "B31")
Dok = ThisComponent
Controller = Dok.getCurrentController()
Tab = Controller.ActiveSheet
Bereich = Tab.getCellRangeByName("A1:B31") 'statt "B31" soll jetzt hier der Wert der Zelle "Tabelle2.M32" (also wieder "B31") angesteuert werden

'------ unten ist alles ok --------------------------

BereichDrucken
end Sub
Sub BereichDrucken
Dim Args1(0)
Dim Args2(1) as new com.sun.star.beans.PropertyValue
Dim Probs
Dim sDrucker as string
Probs = Dok.getPrinter()
sDrucker = Probs(0).value
args1(0) = Bereich.RangeAddress
Tab.setprintAreas(args1())
args2(0).name = "Name"
args2(0).value = "<" & sDrucker & ">"
args2(1).name = "Wait"
args2(1).value = true
Dok.print(args2())
redim args1()
Tab.setprintAreas(args1())
end Sub

Toxitom
********
Beiträge: 3476
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Dynamisches Array drucken

Beitrag von Toxitom » Fr, 22.12.2017 14:17

Hey Miknoll,

na, wenn Du doch schon alle WErte hast :)

Code: Alles auswählen

 Zellname = oSheet.getCellRangeByName("M32").string 'das ist die Zelle, in der der Wert steht (also im Bsp. "B31") 
In deiner Variablen steht doch jetzt der text (String) "B31" .. oder eben der Inhalt.

Also nutzt Du diesen Wert zur Übergabe deines Bereiches:

Code: Alles auswählen

Bereich = Tab.getCellRangeByName("A1:" & zellname) 
Fertig.

Kannste natürlich auch in eine Zeile schreiben:

Code: Alles auswählen

Bereich = Tab.getCellRangeByName("A1:" & oSheet.getCellRangeByName("M32").string) 
Viele Grüße
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic

miknoll

Re: Dynamisches Array drucken

Beitrag von miknoll » Fr, 22.12.2017 14:54

Vielen Dank Tom! Manchmal sieht man vor lauter Weihnachtsbäumen den Wald nicht mehr.... oder so ;-)

Antworten