🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] bestehendes chart ("Diagramm") per Makro editieren, …

Alles zur Programmierung im LibreOffice.
Antworten
nitja
Beiträge: 190
Registriert: Di 20. Okt 2020, 15:55

[gelöst] bestehendes chart ("Diagramm") per Makro editieren, …

Beitrag von nitja » Sa 5. Dez 2020, 20:30

… also nicht erzeugen/erstellen.
Konkret geht's hier erst mal um com.sun.star.table.CellRangeAddress.
Wie dessen Eigenschaften zu editieren sind, wird in den Beispielen, die ich gefunden habe, beschrieben. Leider verwenden alle diese Beispiele das neue CellRangeAddress nur für ein neu zu erstellendes Objekt (charts.addNewByName(name, …, RangeAddress(), …, …)). Ich muss aber beim Eintreffen weiterer Daten nur die "EndRow" anpassen.
Das per UI erstellte, recht spezielle chart per Makro nachzubauen, würde etliche Seiten an Code und damit entsprechende Tage brauchen, die ich lieber anders investieren möchte.
Zuletzt geändert von nitja am Sa 12. Dez 2020, 16:54, insgesamt 1-mal geändert.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: bestehendes chart ("Diagramm") per Makro editieren, …

Beitrag von mikele » So 6. Dez 2020, 14:25

Hallo,
charts besitzen die Methoden getRanges() und setRanges() mit denen die Datenbereiche ausgelesen und gesetzt werden können.
In deinem Fall würde ich den aktuellen Bereich auslesen .getRanges (liefert ein Array), in dem Array die EndRow anpasen und dann per .setRanges wieder zurückschreiben.
Gruß,
mikele

nitja
Beiträge: 190
Registriert: Di 20. Okt 2020, 15:55

Re: bestehendes chart ("Diagramm") per Makro editieren, …

Beitrag von nitja » So 6. Dez 2020, 16:09

ahh! … war ich wohl temporär blind. super!
Dank Dir!

gegen 20h:
Zu früh gefreut.
Während getRanges wie erwartet funktioniert,
finde ich ums *** keine funktionsfähige Syntax für setRanges.

nach Mitternacht (~1:00):
ok, war (für mich) eine harte Nuss …

Code: Alles auswählen

	…
	with oDoc.Sheets(1)
		…
		oDtRng = .getCellRangeByPosition(3,k-1,8,k+l-1)
		oDtRng.setDataArray(iaData)
		adjChart(iCmonth-1,k-1,k+l-1)
	end with
end sub

sub adjChart(iPg as integer,iSrow,iErow)
	dim oChart as object, aRange() 
	oChart = oDoc.Sheets(0).Charts(iPg)
	aRange = oChart.getRanges(0)
	with aRange(0)
		.Sheet = 1 : .StartColumn = 2 : .EndColumn = 6 : .StartRow = iSrow : .EndRow = iErow
	end with
	aRange = Array(aRange(0))
	oChart.setRanges(aRange)
end sub
lässt sich der Datenbereich richtig setzen, alle Eigenschaften des Charts zeigen die gewünschten Werte, ABER …
… nicht die Grafik!
Außer den (X-)Werten der ersten und den (Y-)Werten der letzten Spalte, werden die Graphen der anderen 3 Reihen mit maßstäblich verkleinerten Y-Werten (~ 60%) dargestellt.

Im Sinne der Eingangsfrage ist das jetzt also geklärt, im Sinne der Aufgabenstellung aber keine Lösung.
Was könnte der Grund für das merkwürdige Verhalten sein? Gibt's da einen bekannten "bug"?
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

nitja
Beiträge: 190
Registriert: Di 20. Okt 2020, 15:55

Re: bestehendes chart ("Diagramm") per Makro editieren, …

Beitrag von nitja » Sa 12. Dez 2020, 16:53

spät (war die Woche unter extremem Zeitdruck), aber besser als nie:
"bug" ist geklärt. Das chart hat 2 y-Achsen und deren Zuordnung zu den Datenreihen ist bei (wohl bei den Versuchen mit falscher/unvollständiger Syntax für) setRanges durcheinander gewürfelt worden. Passiert mit der oben angegebenen Version nicht mehr. (Aber repariert hat sie es auch nicht. Musste nach schließlicher Identifikation des Fehlers manuell erledigt werden.)
Jedenfalls ist die Frage jetzt erschöpfend geklärt/gelöst.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten