Tipp 0061 Excel-Diagramm erstellen
Autor/Einsender:
Datum:
  Angie
17.05.2005 (Update)
Entwicklungsumgebung:   VB 6/VBA 6
Dieses Beispiel zeigt, wie per Automation in Excel ein Diagramm erstellt werden kann. Nach dem Erstellen einer neuen, für den Anwender zunächst unsichtbaren Excel-Instanz und einer neuen Arbeitsmappe werden zunächst die Diagramm-Daten (hier ein Datenfeld mit Zufallszahlen) in das Tabellenblatt übertragen, und aus den Daten das Diagramm in einem Diagrammblatt erstellt. Anschließend wird die neu erstellte Excel-Instanz sichtbar gemacht, und dem Anwender die "Kontrolle" übergeben. Hier wird weder die neu erstellte Arbeitsmappe gespeichert, noch die neu erstellte Excel-Instanz vom VB-Programm geschlossen.
 
Private Sub cmdCreateXLChart_Click()
  Dim objXLApp    As Excel.Application
  Dim objXLWkb    As Excel.Workbook
  Dim objXLWks    As Excel.Worksheet

  Dim objXLChart  As Excel.Chart

  On Error GoTo err_CreateXLChart
  Set objXLApp = CreateObject("Excel.Application")
  Set objXLWkb = objXLApp.Workbooks.Add
  Set objXLWks = objXLWkb.Worksheets(1)

  Dim avarArray() As Variant
  Dim nRow As Long
  Dim nCol As Integer

  ReDim avarArray(1 To 6, 1 To 5) As Variant

  For nRow = 1 To UBound(avarArray, 1)
    For nCol = 1 To UBound(avarArray, 2)
      avarArray(nRow, nCol) = Int(Rnd * 100)
    Next
  Next
  objXLWks.Cells(2, 1).Resize(UBound(avarArray, 1), _
        UBound(avarArray, 2)).Value = avarArray

  With objXLWks
    .Range(.Cells(1, 1), .Cells(1, 5)).Value = _
              Array("S1", "S2", "S3", "S4", "S5")
  End With

  Set objXLChart = objXLWkb.Charts.Add()
  With objXLChart
    .ChartType = xlColumnClustered
    .SetSourceData Source:=objXLWks.UsedRange, PlotBy:=xlColumns
    .HasTitle = True
    .ChartTitle.Text = "Diagramm per Automation erstellt"

    .Location Where:=xlLocationAsNewSheet
  End With

exit_Sub:
  On Error Resume Next

  Set objXLChart = Nothing
  Set objXLWks = Nothing
  Set objXLWkb = Nothing

  If Not objXLApp Is Nothing Then
    With objXLApp
      .Visible = True
      .UserControl = True
    End With
    Set objXLApp = Nothing
  End If
    On Error GoTo 0
  Exit Sub

err_CreateXLChart:
  MsgBox "Fehler " & CStr(Err.Number) & vbCrLf & _
      Err.Description, vbCritical, "VB-fun-Demo"
  Resume exit_Sub
End Sub
 
Um das Diagramm als eingebettetes Diagramm im Tabellenblatt mit den Daten zu erstellen, kann der entsprechende Code in obigem Beispiel mit dem folgenden Code ersetzt werden.
 
  Set objXLChart = objXLWks.ChartObjects.Add( _
        50, 40, 400, 250).Chart
  With objXLChart
    .ChartType = xlColumnClustered
    .SetSourceData Source:=objXLWks.UsedRange, PlotBy:=xlColumns
    .HasTitle = True
    .ChartTitle.Text = "Diagramm per Automation erstellt"
  End With
 
Hinweis
Um diesen Tipp ausführen zu können, muss bei Early Binding die Microsoft Excel x.0 Object Library in das VB-/VBA-Projekt eingebunden werden. In obigem Beispiel wurde Early Binding verwendet, die Excel-Objekte wurden mit den entsprechenden Objekttypen definiert.
Bei Late Binding wird zur Entwurfszeit kein Verweis auf die Objektbibliothek in das Projekt eingebunden. Alle verwendeten Objekte werden mit dem Variablentyp Object definiert. Ggf. verwendete anwendungsspezifische Konstanten müssen mit dem entsprechenden numerischen Äquivalent der Konstante ersetzt werden, könnten aber auch mit der Const-Anweisung deklariert werden. Die Verwendung von Konstanten erleichtert das Dokumentieren und Modifizieren Ihrer Programme, und trägt auch zur besseren Lesbarkeit des Codes bei.
 
'Verwendete Excel-Konstanten
  Const xlLocationAsNewSheet As Long = 1
  Const xlColumnClustered As Long = 51
  Const xlColumns As Long = 2

'Variablendefinition
  Dim objXLApp    As Object
  Dim objXLWkb    As Object
  Dim objXLWks    As Object

  Dim objXLChart  As Object
 
Hinweis für VBA-Anwender
Der hier abgebildete Code funktioniert auch in einem VBA-Projekt, dieser muss dazu lediglich in den VB-Editor der entsprechenden Anwendung kopiert werden. Ein Import der im Download enthaltenen *.frm-Datei ist nicht möglich.
Kommentierter Code: Die im Download enthaltene *.frm-Datei kann beispielsweise in Notepad geöffnet werden, und der kommentierte Code über die Zwischenablage in das VBA-Projekt kopiert werden.

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (3,7 kB) Downloads bisher: [ 3837 ]

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: Dienstag, 31. Mai 2011