![]() |
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
|
|
|
|
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
|
|
|
|
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: [ 3836 ]
|
|
|