Diagramm Grösse per Makro ändern

Hallo,
ich versuche per makro die Grösse von Diagrammen (Charts) zu verändern.
Das gelingt nur teilweise.

Der Code funktioniert nicht:
Der Versuch die Grösse der Diagramme zu ändern
      size=ChartDoc.Drawpage.getByIndex(0).getSize()
      msgbox size.width 'ist immer 31286
      size.Width=40000 'Damit eine Veränderung sichtbar würde
      ChartDoc.Drawpage.getByIndex(0).Size=size
      size=ChartDoc.Drawpage.getByIndex(0).getSize()
      msgbox size.width 'Zeigt die Änderung an.
                                                      'Aber es wird
nicht wirklich geändert

Greife ich evtl. auf das falsche Object zu? Ich verstehs nicht :frowning:

Was funktioniertist dieser Code:
    ChartDoc.Diagram.XAxis.Min=DateValue(DateStr) '09.11.2020
    ChartDoc.Diagram.XAxis.NumberFormat=131 'TT.MM

Die komplette Routine:
----8<-----
public Sub SetChartXAxisMinDate()
'** Das Startdatum der Skala setzen
'** Wird von den Ereignissen "Text geändert" und "Nach Aktualisierung" des
'** Controls "ChartXAxisMinDate" (Tab Diagramme, Datumsfeld rechts Oben)
getriggert
dim ChartDoc
   Dim Charts As Object
   Dim Chart as Object
   Dim oSheet
   Dim oForm
   Dim i%
   Dim aDate
   Dim DateStr$
   Dim size
   Dim Cell
   Dim debug$
   Dim cRg
   Dim j%

  cRg=createUnoStruct("com.sun.star.table.CellRangeAddress")
     size=createUnoStruct("com.sun.star.awt.Size")
     oSheet=Thiscomponent.sheets.getByName("Diagramme")
     oForm=oSheet.Drawpage.Forms.getByName("Formular")
     Cell=oSheet.getCellRangeByName("N7")
     aDate = createUnoStruct("com.sun.star.util.Date") 'Holen des Datums
geht nur mit der struct
     aDate=oForm.getByName("ChartXAxisMinDate").Date ' .Text ist nicht
immer aktuell??
    'DateStr=aDate.Day & "." & aDate.Month & "." & aDate.Year
  DateStr = ConvertDateTime(aDate, "STRING") '''' --> mytools.modDate
  Cell.String=Datestr

'Mri oSheet.Charts.getByIndex(0)
     For i=0 To oSheet.Charts.count-1
       Chart = oSheet.Charts.getByIndex(i)
    ChartDoc = Chart.getEmbeddedObject()

    if i=0 then 'Für den Test. Nur das 1. Diagramm
'''' Geht nicht. Zerstört das Diagramm!
'' Der Versuch die Ranges der Diagramme zu verändern
' cRg=Chart.getRanges()
' For j=1 To ubound(cRg)
'
' If cRg(j).EndRow <> 550 then
' cRg(j).EndRow=550
' debug=debug & "Cart(" & i & ") Range(" & j & ")" & chr(10)
' End if
' Next j
' Chart.setRanges(cRg)

      'msgbox ChartDoc.Diagram.XAxis.NumberFormat
'''' Geht nicht
'' Der Versuch die Grösse der Diagramme zu ändern
      size=ChartDoc.Drawpage.getByIndex(0).getSize()
      msgbox size.width 'ist immer 31286
      size.Width=40000 'Damit eine Veränderung sichtbar würde
      ChartDoc.Drawpage.getByIndex(0).Size=size
      size=ChartDoc.Drawpage.getByIndex(0).getSize()
      msgbox size.width 'Zeigt die Änderung an. Aber es wird nicht wirklich
geändert
    End If
  
    ChartDoc.Diagram.XAxis.Min=DateValue(DateStr) '09.11.2020
    'ChartDoc.Diagram.XAxis.NumberFormat=141 'NN TT.MM
    ChartDoc.Diagram.XAxis.NumberFormat=131 'TT.MM
  Next i
'mri Chart
End Sub

Hallo Bernd,

ich habe es mal ganz naiv anders probiert, ich greife auf das Shape-Objekt zu, das das Diagramm enthält:
ChartShape=oDoc.Drawpages(0).getByIndex(0)    'mein Test hat ja nur eine Drawpage und ein Diagramm
'                    der Rest ist von dir, abgesehen von der Variablen ChartShape:
size=ChartShape.getSize()
msgbox size.width 'ist immer 31286
size.Width=40000 'Damit eine Veränderung sichtbar würde
ChartShape.Size=size

Dann ändert sich das Shape und automatisch auch das Diagramm.

Gruß

Gerhard