Hallo,
mit viel Mühe und Unwissenheit habe ich mir ein Makro zur Erstellung eines Diagramms in einem Arbeitsblatt zusammen geschustert. Es läuft soweit auch ganz gut, der Nachteil ist nur: Es funktioniert nur wenn das Arbeitsblatt vorher kein Diagramm enthält. Also muss ich bei jedem Klick, der die Daten des Arbeitsblattes aktualisiert und das Diagramm aufruft vorher das alte löschen. Leider funktioniert die Aktualisierung des Diagramms, wenn ich nur die Daten des Arbeitsblattes ändere, nicht zuverlässig, deshalb immer der Neuaufruf des Diagramms. Leider finde ich keinen LO-Basic-Befehl, der dem Excel-Basic “ChartObject.delete” entspricht.
Wer kann mir helfen und evtl. passende Literatur empfehlen. Es gibt am Diagramm sehr viel zu schrauben: Legenden, Rahmen, Skalierungen etc.
Mein Macro ist im Anhang
Sub Diagramm
Dim Doc As Object
Dim Charts As Object
Dim Chart as Object
Dim Rect As New com.sun.star.awt.Rectangle
Dim RangeAddress(0) As New com.sun.star.table.CellRangeAddress
Dim start_column1 as integer
Dim start_row1 as integer
Dim start_column2 as integer
Dim start_row2 as integer
dim subtitle as string
REM ************ Setup ***************************************
start_column1 = 0
start_row1 = 1
REM ************ Diagram Creation ****************************
Doc = ThisComponent
Sheets = Doc.Sheets
Sheet = Sheets.getByName("Leistungsdiagramm")
Charts = Sheet.Charts
Rect.X = 12000
Rect.Y = 11000
Rect.Width = 40000
Rect.Height = 17000
RangeAddress(0).Sheet = 12
RangeAddress(0).StartColumn = start_column1
RangeAddress(0).StartRow = start_row1
RangeAddress(0).EndColumn = start_column1 + 18
RangeAddress(0).EndRow = start_row1 + 30
Charts.addNewByName("MyChart1", Rect, RangeAddress(), True, True)
Chart = Charts.getByName("MyChart1").EmbeddedObject
Chart.Diagram = Chart.createInstance("com.sun.star.chart.XYDiagram")
Chart.Diagram.Vertical = False
Chart.HasMainTitle = True
Chart.Title.String = "Leistungsdiagramm"
Chart.HasSubTitle = True
dim mystring
dim mycell as object
rem Springe zur Tabelle
myDoc = thisComponent
mySheet = myDoc.sheets(12)
rem Springe zur Zelle
mycell = mysheet.getCellRangeByName("B2")
Rem Lesen der Zelle
mystring = mycell.string
Chart.Subtitle.String = mystring
chart.Diagram.yAxis.Min = 0
chart.Diagram.yAxis.Max = 13
REM ************ End Diagram Creation **************************
End Sub
[Edit - Opaque] Programm Code formatiert als Vorformatierter Text