Tipp 0242 Eingebettetes Excel-Diagramm bearbeiten
Autor/Einsender:
Datum:
  Angie
06.06.2002
Entwicklungsumgebung:   Word 2000
In diesem Beispiel wird das im aktiven Dokument eingebettete Excel-Diagramm (OLEObject) bearbeitet.
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, wurde hier dem bestehenden InlineShape-Objekt ein Textmarkenname zugewiesen.
 
Public Sub ExcelDiagrammBearbeiten()
  Const cBMName As String = "tmXLOleObject1"

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

  Dim objOLEXLWkb  As Object
  Dim objOLEXLWks  As Object
  Dim objOLEXLCht  As Object

  Dim nRow  As Long
  Dim nCol  As Integer

  Set objWDDoc = ActiveDocument

  If objWDDoc.Bookmarks.Exists(cBMName) Then
    On Error Resume Next
    Set objIShape = _
          objWDDoc.Bookmarks(cBMName).Range.InlineShapes(1)

    If Err.Number <> 0 Then
      MsgBox "Es ist ein Fehler aufgetreten !!" & vbCrLf & _
         Err.Description, vbOKOnly + vbExclamation, _
         Title:="Demo - Excel-Diagramm bearbeiten"

      Set objWDDoc = Nothing
      Exit Sub

    Else
      If objIShape.OLEFormat.ClassType <> "Excel.Chart.8" Then
        MsgBox "Es ist ein Fehler aufgetreten !!" & vbCrLf & _
             "Das Element ist kein Excel-Diagramm !!", _
             vbOKOnly + vbExclamation, _
             Title:="Demo - Excel-Diagramm bearbeiten"

        Set objIShape = Nothing
        Set objWDDoc = Nothing
        Exit Sub
      End If
    End If
    On Error GoTo 0
  End If

  objIShape.OLEFormat.DoVerb wdOLEVerbHide

  Set objOLEXLWkb = objIShape.OLEFormat.Object

  Set objOLEXLCht = objOLEXLWkb.Charts(1)
  With objOLEXLCht
    .HasTitle = True
    .ChartTitle.Text = "Demo - Excel-Chart-Objekt bearbeiten"
    .ChartTitle.Font.Size = 12

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

  Set objOLEXLWks = objOLEXLWkb.Worksheets(1)
  With objOLEXLWks
    For nRow = 2 To objOLEXLWks.UsedRange.Rows.Count
      For nCol = 2 To objOLEXLWks.UsedRange.Columns.Count
        .Cells(nRow, nCol).Value = Int((100 * Rnd) + 1)
      Next nCol
    Next nRow
  End With

  objOLEXLWkb.Close True

  Set objOLEXLCht = Nothing
  Set objOLEXLWks = Nothing
  Set objOLEXLWkb = Nothing
  Set objIShape = Nothing
  Set objWDDoc = Nothing
End Sub
 
Hinweis
Um dieses Beispiel ausführen zu können, muss kein Verweis auf die Microsoft Excel Objektbibliothek Microsoft Excel 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 – MS-Graph-Objekt in Dokument einfügen
Diagramm – Eingebettetes MS-Graph-Objekt bearbeiten

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


Download  (19,5 kB) Downloads bisher: [ 1138 ]

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