Automatisieren von Microsoft Excel aus Visual Basic

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 219151 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
219151 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.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt, wie Sie mithilfe von Automatisierungsfunktionen aus Visual Basic Excel-Anwendungen erstellen und in ihrer Funktionsweise beeinflussen können.

Weitere Informationen

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.

Erstellen des Automatisierungsbeispiels

  1. Starten Sie Visual Basic, und erstellen Sie ein neues Standard-EXE-Projekt. Form1 wird standardmäßig erstellt.
  2. 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.
  3. Klicken Sie auf OK, um das Dialogfeld Verweise zu schließen.
  4. Fügen Sie eine Befehlsschaltfläche zu Form1 hinzu.
  5. 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
    
    						
  6. Drücken Sie [F5], um das Projekt auszuführen.

Informationsquellen

Weitere Informationen zur Office-Automatisierung finden Sie auf folgender Microsoft-Website für Office Development:
http://support.microsoft.com/ofd
(c) Microsoft Corporation 1999, Alle Rechte vorbehalten. Beiträge von Richard R. Taylor, Microsoft Corporation.

Eigenschaften

Artikel-ID: 219151 - Geändert am: Mittwoch, 30. Mai 2007 - Version: 5.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
Keywords: 
kbexpertisebeginner kbautomation kbhowto KB219151
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