SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base: 219151
(http://support.microsoft.com/kb/219151/EN-US/
)
How to automate Microsoft Excel from Visual Basic
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Dieser Artikel beschreibt, wie Sie mithilfe von Automatisierungsfunktionen aus Visual Basic Excel-Anwendungen erstellen und in ihrer Funktionsweise beeinflussen können.
Es gibt zwei Möglichkeiten, einen Automatisierungsserver zu steuern: durch frühes oder spätes Binden. Beim späten Binden werden Methoden erst zur Laufzeit gebunden, und der Automatisierungsserver wird als Objekt deklariert. Beim frühen Binden kennt Ihre Anwendung bereits zur Entwurfszeit den genauen Typ des Objekts, mit dem sie kommunizieren wird, und kann ihre Objekte als bestimmten Typ deklarieren. In diesem Beispiel wird das frühe Binden verwendet, das in den meisten Fällen als besser geeignet gilt, da es mehr Leistung und höhere Typsicherheit bietet.
Für das frühe Binden an einen Automatisierungsserver müssen Sie einen Verweis auf die Typbibliothek dieses Servers festlegen. In Visual Basic geschieht dies über das Dialogfeld Verweise, das unter dem Menü Projekt | Verweise zu finden ist. Für dieses Beispiel müssen Sie einen Verweis zur Typbibliothek für Excel hinzufügen, bevor Sie den Code ausführen können. Die Vorgehensweise zum Hinzufügen des Verweises wird im Folgenden beschrieben.
Starten Sie Visual Basic, und erstellen Sie ein neues Standard-EXE-Projekt. Form1 wird standardmäßig erstellt.
Klicken Sie auf Projekt und anschließend auf Verweise, um das Dialogfeld Verweise anzuzeigen. Führen Sie in der Liste einen Bildlauf nach unten zum Eintrag Microsoft Excel 10.0-Objektbibliothek aus, und markieren Sie den Eintrag, um einen Verweis zu Excel hinzuzufügen. Wenn in der Liste nicht die korrekte Objektbibliothek für Ihre Version von Excel angezeigt wird, vergewissern Sie sich, ob Sie Excel richtig installiert haben.
Hinweise
Wenn Sie Microsoft Office Excel 2007 automatisieren, erscheint die Typbibliothek in der Liste der Verweise als Microsoft Excel 12.0-Objektbibliothek.
Wenn Sie Microsoft Office Excel 2003 automatisieren, erscheint die Typbibliothek in der Liste der Verweise als Microsoft Excel 11.0-Objektbibliothek.
Wenn Sie Microsoft Excel 2002 automatisieren, erscheint die Typbibliothek in der Liste der Verweise als Microsoft Excel 10.0-Objektbibliothek.
Wenn Sie Microsoft Excel 2000 automatisieren, erscheint die Typbibliothek in der Liste der Verweise als Microsoft Excel 9.0-Objektbibliothek.
Wenn Sie Microsoft Excel 97 automatisieren, erscheint die Typbibliothek in der Liste der Verweise als Microsoft Excel 8.0-Objektbibliothek.
Klicken Sie auf OK, um das Dialogfeld Verweise zu schließen.
Fügen Sie eine Befehlsschaltfläche zu Form1 hinzu.
Fügen Sie im Codefenster für Form1 den folgenden Code ein:
Option Explicit
Private Sub Command1_Click()
Dim oXL As Excel.Application
Dim oWB As Excel.Workbook
Dim oSheet As Excel.Worksheet
Dim oRng As Excel.Range
'On Error GoTo Err_Handler
' Start Excel and get Application object.
Set oXL = CreateObject("Excel.Application")
oXL.Visible = True
' Get a new workbook.
Set oWB = oXL.Workbooks.Add
Set oSheet = oWB.ActiveSheet
' Add table headers going cell by cell.
oSheet.Cells(1, 1).Value = "First Name"
oSheet.Cells(1, 2).Value = "Last Name"
oSheet.Cells(1, 3).Value = "Full Name"
oSheet.Cells(1, 4).Value = "Salary"
' Format A1:D1 as bold, vertical alignment = center.
With oSheet.Range("A1", "D1")
.Font.Bold = True
.VerticalAlignment = xlVAlignCenter
End With
' Create an array to set multiple values at once.
Dim saNames(5, 2) As String
saNames(0, 0) = "John"
saNames(0, 1) = "Smith"
saNames(1, 0) = "Tom"
saNames(1, 1) = "Brown"
saNames(2, 0) = "Sue"
saNames(2, 1) = "Thomas"
saNames(3, 0) = "Jane"
saNames(3, 1) = "Jones"
saNames(4, 0) = "Adam"
saNames(4, 1) = "Johnson"
' Fill A2:B6 with an array of values (First and Last Names).
oSheet.Range("A2", "B6").Value = saNames
' Fill C2:C6 with a relative formula (=A2 & " " & B2).
Set oRng = oSheet.Range("C2", "C6")
oRng.Formula = "=A2 & "" "" & B2"
' Fill D2:D6 with a formula(=RAND()*100000) and apply format.
Set oRng = oSheet.Range("D2", "D6")
oRng.Formula = "=RAND()*100000"
oRng.NumberFormat = "$0.00"
' AutoFit columns A:D.
Set oRng = oSheet.Range("A1", "D1")
oRng.EntireColumn.AutoFit
' Manipulate a variable number of columns for Quarterly Sales Data.
Call DisplayQuarterlySales(oSheet)
' Make sure Excel is visible and give the user control
' of Microsoft Excel's lifetime.
oXL.Visible = True
oXL.UserControl = True
' Make sure you release object references.
Set oRng = Nothing
Set oSheet = Nothing
Set oWB = Nothing
Set oXL = Nothing
Exit Sub
Err_Handler:
MsgBox Err.Description, vbCritical, "Error: " & Err.Number
End Sub
Private Sub DisplayQuarterlySales(oWS As Excel.Worksheet)
Dim oResizeRange As Excel.Range
Dim oChart As Excel.Chart
Dim iNumQtrs As Integer
Dim sMsg As String
Dim iRet As Integer
' Determine how many quarters to display data for.
For iNumQtrs = 4 To 2 Step -1
sMsg = "Enter sales data for" & Str(iNumQtrs) & " quarter(s)?"
iRet = MsgBox(sMsg, vbYesNo Or vbQuestion _
Or vbMsgBoxSetForeground, "Quarterly Sales")
If iRet = vbYes Then Exit For
Next iNumQtrs
sMsg = "Displaying data for" & Str(iNumQtrs) & " quarter(s)."
MsgBox sMsg, vbMsgBoxSetForeground, "Quarterly Sales"
' Starting at E1, fill headers for the number of columns selected.
Set oResizeRange = oWS.Range("E1", "E1").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Formula = "=""Q"" & COLUMN()-4 & CHAR(10) & ""Sales"""
' Change the Orientation and WrapText properties for the headers.
oResizeRange.Orientation = 38
oResizeRange.WrapText = True
' Fill the interior color of the headers.
oResizeRange.Interior.ColorIndex = 36
' Fill the columns with a formula and apply a number format.
Set oResizeRange = oWS.Range("E2", "E6").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Formula = "=RAND()*100"
oResizeRange.NumberFormat = "$0.00"
' Apply borders to the Sales data and headers.
Set oResizeRange = oWS.Range("E1", "E6").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Borders.Weight = xlThin
' Add a Totals formula for the sales data and apply a border.
Set oResizeRange = oWS.Range("E8", "E8").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Formula = "=SUM(E2:E6)"
With oResizeRange.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.Weight = xlThick
End With
' Add a Chart for the selected data
Set oResizeRange = oWS.Range("E2:E6").Resize(ColumnSize:=iNumQtrs)
Set oChart = oWS.Parent.Charts.Add
With oChart
.ChartWizard oResizeRange, xl3DColumn, , xlColumns
.SeriesCollection(1).XValues = oWS.Range("A2", "A6")
For iRet = 1 To iNumQtrs
.SeriesCollection(iRet).Name = "=""Q" & Str(iRet) & """"
Next iRet
.Location xlLocationAsObject, oWS.Name
End With
' Move the chart so as not to cover your data.
With oWS.Shapes("Chart 1")
.Top = oWS.Rows(10).Top
.Left = oWS.Columns(2).Left
End With
' Free any references.
Set oChart = Nothing
Set oResizeRange = Nothing
End Sub
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Bitte geben Sie Ihr Feedback zu diesem Artikel ab
Hat dieser Artikel bei der Lösung Ihres Problems geholfen?
Ja
Nein
Ich weiß nicht
Waren die Informationen für Ihr Problem relevant?
Ja
Nein
Wie hoch war der Aufwand für Sie persönlich, um diesen Artikel zu verwenden?
Sehr gering
Gering
Mäßig
Hoch
Sehr hoch
Wie könnte man den Artikelinhalt verbessern?
Hinweis: Leider können wir keine Kommentare persönlich beantworten.
Danke! Dieses Feedback hilft uns dabei, die Supportartikel weiter zu verbessern. Weitere Informationen finden Sie auf der Hilfe und Support-Startseite.