Tipp 0239 MS-Graph-Objekt in Dokument einfügen
Autor/Einsender:
Datum:
  Angie
27.05.2002
Entwicklungsumgebung:   Word 2000
In diesem Beispiel wird in das aktive Dokument an einer bestimmten Stelle (Textmarke) ein eingebettetes MS-Graph-Objekt (OLEObject) als InlineShape-Objekt eingefügt.
Soll ein InlineShape-Objekt nachträglich per VBA bearbeitet werden, kann dieses normalerweise nur über den Index angesprochen werden, da man dem InlineShape-Objekt keinen Namen vergeben kann. Um eine eindeutige Identifizierung zu gewährleisten, kann man alternativ, wie hier gezeigt, dem InlineShape-Objekt einen Textmarkennamen zuweisen.
 
Public Sub AddMSGraphObject()
  Const cBMName As String = "tmGraph1"

  Dim objWDDoc        As Word.Document
  Dim objWDRange      As Word.Range
  Dim objIShape       As Word.InlineShape

  Dim objOLEChart     As Object
  Dim objOLEDataSht   As Object

  Const xl3DColumn = -4100

  Dim avarHeaderRows  As Variant
  Dim avarHeaderCols  As Variant

  Dim nRowsCnt        As Long
  Dim nColsCnt        As Integer
  Dim nRow            As Long
  Dim nCol            As Integer

  Set objWDDoc = ActiveDocument

  If Not objWDDoc.Bookmarks.Exists(cBMName) Then
    MsgBox "Die Textmarke '" & cBMName & " 'ist im " & _
           "aktiven Dokument nicht vorhanden !!!", _
           vbOKOnly + vbExclamation, _
           Title:="Demo - MS-Graph-Objekt einfügen"
    Set objWDDoc = Nothing
    Exit Sub
  End If

  Application.ScreenUpdating = False

  Set objWDRange = objWDDoc.Bookmarks(cBMName).Range
  objWDRange.Text = ""

  Set objIShape = objWDDoc.InlineShapes.AddOLEObject( _
        ClassType:="MSGraph.Chart.8", FileName:="", _
        Linktofile:=False, DisplayAsIcon:=False, _
        Range:=objWDRange)

  objWDDoc.Bookmarks.Add Name:=cBMName, Range:=objIShape.Range

  With objIShape
    .Width = 350
    .Height = 200
  End With

  Set objOLEChart = objIShape.OLEFormat.Object
  With objOLEChart
    .ChartArea.Font.Size = 8
    .ChartType = xl3DColumn
    .HasLegend = True
    .ApplyDataLabels
    .HasTitle = True
    .ChartTitle.Text = "Demo - MS Graph Object"
    .ChartTitle.Font.Size = 12
    .ChartArea.AutoScaleFont = False

    .SeriesCollection(1).Interior.ColorIndex = 36
    .SeriesCollection(2).Interior.ColorIndex = 34
    .SeriesCollection(3).Interior.ColorIndex = 38
  End With

  Set objOLEDataSht = objOLEChart.Application.DataSheet

  nRowsCnt = 2
  nColsCnt = 3

  avarHeaderRows = Array("Zeile 1", "Zeile 2", "Zeile 3")
  avarHeaderCols = _
    Array("Spalte 1", "Spalte 2", "Spalte 3", "Spalte 4")

  With objOLEDataSht
    .Cells.Clear

    For nRow = 0 To nRowsCnt
      .Cells(nRow + 2, 1).Value = avarHeaderRows(nRow)
    Next nRow

    For nCol = 0 To nColsCnt
      .Cells(1, nCol + 2).Value = avarHeaderCols(nCol)
    Next nCol

    nRowsCnt = nRowsCnt + 2
    nColsCnt = nColsCnt + 2

    For nRow = 2 To nRowsCnt
      For nCol = 2 To nColsCnt
        .Cells(nRow, nCol).Value = Int((100 * Rnd) + 1)
      Next nCol
    Next nRow
  End With

  With objOLEChart.Application
    .Update
    .Quit
  End With

  Application.ScreenUpdating = True

  Set objOLEDataSht = Nothing
  Set objOLEChart = Nothing
  Set objIShape = Nothing
  Set objWDRange = Nothing
  Set objWDDoc = Nothing
End Sub
 
Hinweis
Um dieses Beispiel ausführen zu können, muss kein Verweis auf die Microsoft Graph Objektbibliothek Microsoft Graph x.0 Object Library in das VBA-Projekt eingebunden werden.
Um jedoch während der Entwicklungsphase die Vorteile von Early Binding nutzen zu können, können Sie einen Verweis auf die Objektbibliothek einbinden, und vor der Verteilung des Programms den Verweis entfernen. Im Tipp Automation mit Office-Anwendungen wird der Unterschied zwischen Early und Late Binding anhand eines Beispiels zur Automatisierung von Word beschrieben.
Weitere Links zum Thema
Diagramm – Eingebettetes MS-Graph-Objekt bearbeiten
Diagramm – Eingebettetes Excel-Diagramm bearbeiten

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
Word-Version
95
97
2000
2002 (XP)
2003
2007
2010


Download  (17,4 kB) Downloads bisher: [ 816 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Montag, 25. Juli 2011