Automatisieren von Microsoft Excel mit Visual Basic .NET

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 301982 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

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 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
    					
  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
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

Artikel-ID: 301982 - Geändert am: Montag, 27. Januar 2014 - Version: 1.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • 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.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com