Const $xlColumns = 2 Const $xl3DPieExploded = 70 Const $xlDataLabelsShowValue = 2 Local $oExcel = ObjCreate("Excel.Application") ; Excel-Objekt erstellen $oExcel.Visible = 1 $oExcel.SheetsInNewWorkbook = 1 ; Anzahl der gewünschten Sheets beim Erstellen festlegen Local $oBook = $oExcel.Workbooks.Add ; im Excel-Objekt ein Workbook-Objekt erstellen Local $oSheet = $oBook.Sheets(1) ; Sheet-Objekt für Sheet 1 erstellen (Name oder Index) $oSheet.Name = 'Mein Sheet' ; Eigenschft Name ändern ; oder vorhandene Datei öffnen: ;~ Local $oBook = $oExcel.WorkBooks.Open($sFilePath, Default, False) ;~ Local $oSheet = $oBook.Worksheets.Item(1) ; Index od. Name des Sheets ; Daten in neuem Sheet eintragen ; Die Range-Offset-Adressierung ermöglicht einfaches Navigieren mit Schleifen ; Syntax: NewRange = Objekt.Range("StartZelle").Offset(ZeilenOffset, SpaltenOffset) ; Offset=0 ist die betreffende Zeile/Spalte selbst, die Adressierung ist relativ zur StartZelle ; negative Werte betreffen also Zeilen/Spalten oberhalb/vor der StartZelle ; Spaltenbeschriftung B1:H1 For $i = 0 To 7 If $i = 7 Then $oSheet.Range("B1").Offset(0, $i).Value = 'SUMME' Else $oSheet.Range("B1").Offset(0, $i).Value = 'HEADER ' & $i+1 EndIf Next ; Zeilenbeschriftung A2:A10 For $i = 0 To 8 $oSheet.Range("A2").Offset($i, 0).Value = 'NAME ' & $i+1 Next ; Werte eintragen B2:H10 For $i = 0 To 8 For $j = 0 To 6 $oSheet.Range("B2").Offset($i, $j).Value = Random(8,30,1) Next Next ; Formeln Summen Zeilen und Summe gesamt Local $r = 2 For $i = 0 To 9 If $i = 9 Then $oSheet.Range("I2").Offset($i, 0).Formula = "=SUMME(I2:I10)" Else $oSheet.Range("I2").Offset($i, 0).Formula = "=SUMME(B"&$r&":H"&$r&")" $r += 1 EndIf Next ; Diagramm im $oSheet erstellen ; Um die Positionierung des Diagramms an einer Zelle auszurichten, kann man die Werte vorab abfragen ; und das Diagramm gleich mit diesen Parametern erstellen, oder anschließend verschieben Local $width = 300, $height = 200 ; Ausrichtung linksbündig an Zelle B13: ;~ Local $left = $oSheet.Range("B13").Left ;~ Local $top = $oSheet.Range("B13").Top ; Ausrichtung rechtsbündig an Zelle I13: Local $left = $oSheet.Range("J13").Left - $width ; Zelle J13: left = Zelle I13: right ! Local $top = $oSheet.Range("I13").Top ; Objekt Diagramm erstellen Local $oChart = $oSheet.ChartObjects.Add($left, $top, $width, $height).Chart With $oChart .ChartType = $xl3DPieExploded ; Diagrammtyp festlegen .SetSourceData($oSheet.Range("I2:I10"), $xlColumns) ; Datenbereich für Diagramm .SeriesCollection(1).XValues = "='Mein Sheet'!Z2S1:Z10S1" ; Beschriftung Legende setzen (Namen aus A2:A10) .HasTitle = True ; Titel aktivieren .ChartTitle.Characters.Text = "Einzelsummen / Name (Gesamt = " & $oSheet.Range('I11').Value & ")" ; Titel .ApplyDataLabels($xlDataLabelsShowValue, False, True) ; Segmente Beschriften mit Werten EndWith ; Diagramm (Zeichnungsfläche=Shape) ausrichten, wenn nicht vorab positioniert ;~ With $oSheet ;~ .Shapes(1).Top = $oSheet.Range("B13").Top ; Ausrichtung Top an Zelle B13.top ;~ .Shapes(1).Left = $oSheet.Range("B13").Left ; Ausrichtung Left an Zelle B13.left ;~ .Select ;~ EndWith