Seite 1 von 1
[gelöst] bestehendes chart ("Diagramm") per Makro editieren, …
Verfasst: Sa 5. Dez 2020, 20:30
von nitja
… 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.
Re: bestehendes chart ("Diagramm") per Makro editieren, …
Verfasst: So 6. Dez 2020, 14:25
von mikele
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.
Re: bestehendes chart ("Diagramm") per Makro editieren, …
Verfasst: So 6. Dez 2020, 16:09
von nitja
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"?
Re: bestehendes chart ("Diagramm") per Makro editieren, …
Verfasst: Sa 12. Dez 2020, 16:53
von nitja
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.