Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

Automatisieren von Microsoft Excel mit Visual Basic .NET

Zusammenfassung
Dieser Artikel beschreibt, wie Sie mithilfe von Microsoft Visual Basic .NET einen Automatisierungsclient für Microsoft Excel erstellen.
Weitere Informationen
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

  1. Starten Sie "Microsoft Visual Studio .NET".
  2. 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.
  3. Fügen Sie einen Verweis auf die Microsoft Excel Object Library hinzu. Gehen Sie hierzu folgendermaßen vor:
    1. Klicken Sie im Menü Projekt auf Verweis hinzufügen.
    2. 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 Primary Interop-Assemblys (PIAs). Microsoft Office XP beinhaltet keine PIAs, sie können jedoch heruntergeladen werden. Weitere Informationen zu Office XP-PIAs finden Sie im folgenden Artikel der Microsoft Knowledge Base:
      328912 Primäre Interop-Assemblys (PIAs) für Microsoft Office XP stehen zum Download zur Verfügung
    3. Klicken Sie im Dialogfeld Verweise hinzufügen auf OK, um Ihre Auswahl zu bestätigen.
  4. Wählen Sie im Menü Ansicht die Option Toolbox, um die Toolbox anzuzeigen, und fügen Sie dann Form1 eine Schaltfläche hinzu.
  5. Doppelklicken Sie auf Button1 (Schaltfläche 1). Das Codefenster für das Formular erscheint.
  6. 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 SubErr_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					
  7. Fügen Sie ganz oben in "Form1.vb" den folgenden Code ein:
    Imports Microsoft.Office.Core					

Testen des Automatisierungsclients

  1. Drücken Sie die Taste [F5], um das Programm zu erstellen und auszuführen.
  2. Klicken Sie im Formular auf Button1. Das Programm startet Excel und füllt ein neues Arbeitsblatt mit Daten.
  3. Klicken Sie auf Ja, wenn Sie dazu aufgefordert werden, Quartalsverkaufszahlen einzugeben. Zum Arbeitsblatt wird ein Diagramm hinzugefügt, das mit den Quartalszahlen verknüpft ist.
Informationsquellen
Weitere Informationen finden Sie auf folgender Website des Microsoft Developer Network (MSDN):
Microsoft Office Development with Visual Studio (Microsoft Office-Entwicklung mit Visual Studio)
http://msdn2.microsoft.com/de-de/library/aa188489(office.10).aspx
Weitere Informationen zu Excel und Visual Basic finden Sie im folgenden Artikel der Microsoft Knowledge Base:
219151 Automatisieren von Microsoft Excel aus Visual Basic
xl2003 automating automation automate createobject
Hinweis Dies ist ein Artikel, der im Schnellverfahren direkt von der Microsoft-Supportorganisation erstellt wurde. Die hierin enthaltenen Informationen werden als Reaktion auf neue Probleme wie besehen bereitgestellt. Da dieser Artikel im Schnellverfahren erstellt wurde, kann er Tippfehler enthalten und zu einem späteren Zeitpunkt ohne vorherige Ankündigung überarbeitet werden. Weitere zu berücksichtigende Informationen finden Sie in den Nutzungsbedingungen.
Eigenschaften

Artikelnummer: 301982 – Letzte Überarbeitung: 01/27/2014 13:48:00 – Revision: 1.0

  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • kbpia kbautomation kbhowto KB301982
Feedback