Habe folgendes Problem:
Ich habe ein Calc Dokument erstellt, in dem ich ein Diagramm (Chart) eingebaut habe. In meiner Tabelle 1 (hier stehen die Diagrammdaten) möchte ich nun den Datenbereich ändern (einlesen einer Datenbankdatei - ist mit einem anderen Makro erledigt) und anschließend das Diagramm automatisch auf diesen Datenbereich ändern.
Habe das folgende Makro fertig, schaffe es aber nicht die Ansicht des Diagramms automatisch anzupassen. D.h. der Datenbereich wird zwar geändert, aber in der Anzeige nicht aktualisiert (rechte Maustaste auf dem Diagramm zeigt den neuen Datenbereich an). Was muss man tun um die Aktualisierung der Chart Anzeige durchzuführen????
Habe was von einem Listener gelesen...aber keine Ahnung wie das gehen soll!!!???!!!
hier der funktionierende Code:
Code: Alles auswählen
sub Tbl_Diagramm
DIM oDoc
DIM arg()
DIM iZeile as integer, iSpalte as integer
lsearch=63
sURL=ConvertToURL("c:/test/Diagramm.ots") '//Name der Vorlage mit dem Vorgabediagramm
oDoc=StarDesktop.loadComponentFromUrl(sURL, "_blank", lsearch, Arg())
oDoc=ThisComponent
oSheet1=oDoc.sheets.getByIndex(0) '//Auswahl des ertsen sheets
iZeile=Ubound(oSheet1.RowDescriptions)+1 '//auslesen der letzen Zeile
iSpalte=Ubound(oSheet1.ColumnDescriptions) '//auslesen der letzten Spalte
x=Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z")
'sBereich="$Tabelle1.$A$1:.$"+x(iSpalte)+"$"+cInt(iZeile) '//so lautet die eigentliche Verwendung für später
sBereich="$Tabelle1.$B$1:.$D$8" '//neuer Datenbereich zum Test
REM das Calc Dokument beinhaltet schon ein Diagramm in dem Sheet "Diagramm1"
oSheetsDia=oDoc.sheets.getByName("Diagramm1")
oCharts=oSheetsDia.getCharts.getByIndex(0)
oChartObj=oCharts.EmbeddedObject
oChartObj.ChartRangeAddress=sBereich
oChartObj.Title.String="**neuer Haupttitel**"
oChartObj.Subtitle.String="**neuer Untertitel**"
'//hier fehlt die Aktualisierung des Datenbereiches des Diagramms
'//der neue Bereich wird akzeptiert (ist eingetragen bei Datenbereich ändern)
end sub
Gruss
sarotti