Dieser Artikel wurde zuvor veröffentlicht unter D301982
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base: 301982
(http://support.microsoft.com/kb/301982/EN-US/
)
How to automate Microsoft Excel from Visual Basic .NET
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.
Automatisierung ist ein Prozess, der es Anwendungen, die in Sprachen wie Visual Basic geschrieben sind, ermöglicht, andere Anwendungen mithilfe eines Programms zu steuern. Wenn Sie Excel automatisieren, können Sie neue Arbeitsmappen erstellen, der Arbeitsmappe Daten hinzufügen, Diagramme erstellen oder andere Aktionen schnell und komfortabel durchführen. In Excel und anderen Microsoft Office-Anwendungen kann mithilfe der Automatisierung nahezu jeder Vorgang, der manuell über die Benutzeroberfläche möglich ist, auch mithilfe eines Programms umgesetzt werden.
Diese programmgesteuerte Funktion führt Excel über ein Objektmodell aus. Das Objektmodell stellt eine Sammlung von Klassen und Methoden dar, die als Gegenstücke zu den logischen Excel-Komponenten dienen. Es gibt z. B. ein Objekt Application, ein Objekt Workbook und ein Objekt Worksheet. Jedes dieser Objekte beinhaltet die jeweilige Funktionalität der entsprechenden Excel-Komponenten. Damit Sie Zugriff auf das Objektmodell von Visual Basic .NET haben, können Sie eine Projektreferenz zur Typbibliothek einrichten.
Dieser Artikel beschreibt, wie Sie eine entsprechende Projektreferenz zur Excel-Typbibliothek für Visual Basic .NET einrichten, und enthält einen Beispielcode, wie Sie in Excel Vorgänge automatisieren können.
Erstellen eines Automatisierungsclients für Microsoft Excel
Starten Sie "Microsoft Visual Studio .NET".
Klicken Sie im Menü Datei auf Neu, und klicken Sie anschließend auf Projekt. Wählen Sie aus den Visual Basic-Projekttypen die Option Windows-Anwendung aus. Form1 wird standardmäßig erstellt.
Fügen Sie einen Verweis auf die Microsoft Excel Object Library hinzu. Gehen Sie hierzu folgendermaßen vor:
Klicken Sie im Menü Projekt auf Verweis hinzufügen.
Gehen Sie zu dem Eintrag für die Microsoft Excel Object Library auf der Registerkarte COM, und klicken Sie dann auf Auswählen.
Hinweis: Microsoft Office 2003 beinhaltet Primäre Interop-Assemblys (Primary Interop Assembly, PIA). Microsoft Office XP beinhaltet keine PIAs, sie können jedoch gedownloadet werden.
Weitere Informationen zu Office XP-PIAs finden Sie im folgenden Artikel der Microsoft Knowledge Base:
Primäre Microsoft Office XP-Interop-Assembly (Pia) sind zu Download verfügbar
Klicken Sie im Dialogfeld Verweise hinzufügen auf OK, um Ihre Auswahl zu bestätigen.
Wählen Sie im Menü Ansicht die Option Toolbox, um die Toolbox anzuzeigen, und fügen Sie dann Form1 eine Schaltfläche hinzu.
Doppelklicken Sie auf Button1 (Schaltfläche 1). Das Codefenster für das Formular erscheint.
Fügen Sie im Codefenster den folgenden Code hinzu:
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
End Sub
Ersetzen Sie diesen Code durch folgenden Code:
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim oXL As Excel.Application
Dim oWB As Excel.Workbook
Dim oSheet As Excel.Worksheet
Dim oRng As Excel.Range
' Start Excel and get Application object.
oXL = CreateObject("Excel.Application")
oXL.Visible = True
' Get a new workbook.
oWB = oXL.Workbooks.Add
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 = Excel.XlVAlign.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).
oRng = oSheet.Range("C2", "C6")
oRng.Formula = "=A2 & "" "" & B2"
' Fill D2:D6 with a formula(=RAND()*100000) and apply format.
oRng = oSheet.Range("D2", "D6")
oRng.Formula = "=RAND()*100000"
oRng.NumberFormat = "$0.00"
' AutoFit columns A:D.
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 Excel's lifetime.
oXL.Visible = True
oXL.UserControl = True
' Make sure that you release object references.
oRng = Nothing
oSheet = Nothing
oWB = Nothing
oXL.Quit()
oXL = Nothing
Exit Sub
Err_Handler:
MsgBox(Err.Description, vbCritical, "Error: " & Err.Number)
End Sub
Private Sub DisplayQuarterlySales(ByVal oWS As Excel.Worksheet)
Dim oResizeRange As Excel.Range
Dim oChart As Excel.Chart
Dim oSeries As Excel.Series
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
' Starting at E1, fill headers for the number of columns selected.
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.
oResizeRange = oWS.Range("E2", "E6").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Formula = "=RAND()*100"
oResizeRange.NumberFormat = "$0.00"
' Apply borders to the Sales data and headers.
oResizeRange = oWS.Range("E1", "E6").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Borders.Weight = Excel.XlBorderWeight.xlThin
' Add a Totals formula for the sales data and apply a border.
oResizeRange = oWS.Range("E8", "E8").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Formula = "=SUM(E2:E6)"
With oResizeRange.Borders(Excel.XlBordersIndex.xlEdgeBottom)
.LineStyle = Excel.XlLineStyle.xlDouble
.Weight = Excel.XlBorderWeight.xlThick
End With
' Add a Chart for the selected data.
oResizeRange = oWS.Range("E2:E6").Resize(ColumnSize:=iNumQtrs)
oChart = oWS.Parent.Charts.Add
With oChart
.ChartWizard(oResizeRange, Excel.XlChartType.xl3DColumn, , Excel.XlRowCol.xlColumns)
oSeries = .SeriesCollection(1)
oSeries.XValues = oWS.Range("A2", "A6")
For iRet = 1 To iNumQtrs
.SeriesCollection(iRet).Name = "=""Q" & Str(iRet) & """"
Next iRet
.Location(Excel.XlChartLocation.xlLocationAsObject, oWS.Name)
End With
' Move the chart so as not to cover your data.
With oWS.Shapes.Item("Chart 1")
.Top = oWS.Rows(10).Top
.Left = oWS.Columns(2).Left
End With
' Free any references.
oChart = Nothing
oResizeRange = Nothing
End Sub
Fügen Sie ganz oben in "Form1.vb" den folgenden Code ein:
Imports Microsoft.Office.Core
Testen des Automatisierungsclients
Drücken Sie die Taste [F5], um das Programm zu erstellen und auszuführen.
Klicken Sie im Formular auf Button1. Das Programm startet Excel und füllt ein neues Arbeitsblatt mit Daten.
Klicken Sie auf Ja, wenn Sie dazu aufgefordert werden, Quartalverkaufszahlen einzugeben. Zum Arbeitsblatt wird ein Diagramm hinzugefügt, das mit den Quartalszahlen verknüpft ist.
Die Informationen in diesem Artikel beziehen sich auf:
Microsoft Visual Basic .NET 2003 Standard Edition
Microsoft Visual Basic .NET 2002 Standard Edition
Microsoft Office Excel 2003
Microsoft Excel 2002 Standard Edition
Keywords:
kbpia kbautomation kbhowto KB301982
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.
Wie hoch war der Aufwand für Sie persönlich, um diesen Artikel zu verwenden?
Sehr gering
Gering
Mittel
Hoch
Sehr hoch
Sagen Sie uns bitte, wie wir diese Informationen noch verbessern können
Danke! Dieses Feedback hilft uns dabei, die Supportartikel weiter zu verbessern. Weitere Informationen finden Sie auf der Hilfe und Support-Startseite.