Arbeiten mit Diagrammen

In Word 2007 Service Pack 2 (SP2) und höher können Sie mithilfe des VBA-Objektmodells in Word programmgesteuert auf Diagramme zugreifen und diese bearbeiten. Das Diagrammobjekt in Word wird von der gleichen gemeinsamen Office-Zeichnungsebenenimplementierung gezeichnet, die von Excel verwendet wird. Wenn Sie also mit dem Diagrammobjektmodell in Excel vertraut sind, können Sie excel VBA-Code, der Diagramme bearbeitet, problemlos in VBA-Code von Word migrieren.

Verwenden des Chart-Objekts

In Word wird ein Diagramm durch ein Chart-Objekt dargestellt. Das Chart-Objekt ist in einer InlineForm oder Form enthalten. Verwenden Sie entweder die InlineShapes-Auflistung oder die Shapes-Auflistung des Document-Objekts , um neue Diagramme hinzuzufügen oder auf vorhandene Diagramme zuzugreifen. Sie verwenden die AddChart-Methode für beide Sammlungen und geben dabei den Diagrammtyp und die Position innerhalb des Dokuments an, um ein neues Diagramm hinzuzufügen.

Verwenden Sie die HasChart-Eigenschaft , um zu bestimmen, ob ein InlineShape - oder Shape-Objekt ein Diagramm enthält. Wenn HasChart True zurückgibt, können Sie die Chart-Eigenschaft verwenden, um einen Verweis auf ein Chart-Objekt abzurufen, das das Diagramm darstellt. An diesem Punkt ist die Implementierung praktisch identisch mit der von Excel und VBA-Code kann in den meisten Fällen zwischen den beiden Programmen übertragen werden.

Im folgenden VBA-Codebeispiel wird dem aktiven Arbeitsblatt in Excel beispielsweise ein neues gestapeltes 2D-Säulendiagramm hinzugefügt und die Quelldaten des Diagramms auf den Bereich A1:C3 des Arbeitsblatts Sheet1 festgelegt.

Sub AddChart_Excel()
    Dim objShape As Shape
    
    ' Create a chart and return a Shape object reference.
    ' The Shape object reference contains the chart.
    Set objShape = ActiveSheet.Shapes.AddChart(XlChartType.xlColumnStacked100)
    
    ' Ensure the Shape object contains a chart. If so,
    ' set the source data for the chart to the range A1:C3.
    If objShape.HasChart Then
        objShape.Chart.SetSourceData Source:=Range("'Sheet1'!$A$1:$C$3")
    End If
End Sub

Im Vergleich dazu fügt das folgende VBA-Codebeispiel dem aktiven Dokument in ein neues gestapeltes 2D-Säulendiagramm hinzu und legt die Quelldaten des Diagramms auf den Bereich A1:C3 aus den Diagrammdaten fest, die dem Diagramm zugeordnet sind.

Sub AddChart_Word()
    Dim objShape As InlineShape
    
    ' Create a chart and return a Shape object reference.
    ' The Shape object reference contains the chart.
    Set objShape = ActiveDocument.InlineShapes.AddChart(XlChartType.xlColumnStacked100)
    
    ' Ensure the Shape object contains a chart. If so,
    ' set the source data for the chart to the range A1:C3.
    If objShape.HasChart Then
        objShape.Chart.SetSourceData Source:="'Sheet1'!$A$1:$C$3"
    End If
End Sub

Wesentliche Unterschiede zwischen dem Chart-Objekt in Word und dem ChartObject-Objekt in Excel

Obwohl die Arbeit mit Diagrammen zwischen Excel und Word in den meisten Fällen nahezu identisch ist, ist es hilfreich, wichtige Bereiche zu identifizieren, in denen sich die beiden Implementierungen unterscheiden:

  • Für die programmgesteuerte Erstellung oder Veränderung eines ChartData-Objekts in Word muss Excel ausgeführt werden.

  • Diagrammeigenschaften und Methoden zum Bearbeiten des Diagrammblatts sind nicht implementiert. Das Konzept eines Diagrammblatts ist für Excel spezifisch. In Word werden keine Diagrammblätter verwendet, sodass Methoden und Eigenschaften, mit denen auf ein Diagrammblatt verwiesen oder dieses verändert wird, für diese Anwendungen deaktiviert wurden.

  • Eigenschaften und Methoden, die in Excel normalerweise einen Range-Objektverweis annehmen, nehmen jetzt eine Bereichsadresse in Word an. Das Range-Objekt in Word unterscheidet sich vom Range-Objekt in Excel. Um Verwirrung zu vermeiden, akzeptiert das Diagrammobjektmodell in Word Bereichsadresszeichenfolgen wie "='Sheet1'!$A$1:$D$5", in diesen Eigenschaften und Methoden (z. B. der SetSourceData-Methode des Chart-Objekts), die Range-Objekte in Excel akzeptieren.

  • Für Word wurde dem VBA-Objektmodell ein neues Objekt, ChartData, hinzugefügt, damit der Zugriff auf die zugrunde liegenden, verknüpften oder eingebetteten Daten für ein Diagramm ermöglicht werden kann. Jedem Diagramm sind die Daten zugeordnet, mit denen das Diagramm in Word gezeichnet wird. Die Diagrammdaten können entweder aus einer externen Excel-Arbeitsmappe verknüpft oder als Teil des Diagramms selbst eingebettet sein. Das ChartData-Objekt kapselt den Zugriff auf die Daten für ein angegebenes Diagramm in Word. Im folgenden VBA-Codebeispiel werden beispielsweise die Diagrammdaten für jedes Diagramm, das im aktiven Dokument in Word enthalten ist, angezeigt und dann minimiert.

Sub ShowWorkbook_Word() 
    Dim objShape As InlineShape 
     
    ' Iterates each inline shape in the active document. 
    ' If the inline shape contains a chart, then display the 
    ' data associated with that chart and minimize the application 
    ' used to display the data. 
    For Each objShape In ActiveDocument.InlineShapes 
        If objShape.HasChart Then 
 
            ' Activate the topmost window of the application used to 
            ' display the data for the chart. 
            objShape.Chart.ChartData.Activate 
             
            ' Minimize the application used to display the data for 
            ' the chart. 
            objShape.Chart.ChartData.Workbook.Application.WindowState = -4140 
        End If 
    Next 
End Sub 

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.