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

Automatisieren von Microsoft Excel aus Visual Basic

Der Support für Office 2003 wurde eingestellt

Microsoft stellte am 8. April 2014 den Support für Office 2003 ein. Diese Änderung wirkt sich auf Ihre Softwareupdates und Sicherheitsoptionen aus. Erfahren Sie, was das für Sie bedeutet und wie Sie Ihren Schutz aufrechterhalten können.

Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
219151 How to automate Microsoft Excel from Visual Basic
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: (c) Microsoft Corporation 1999, Alle Rechte vorbehalten. Beiträge von Richard R. Taylor, Microsoft Corporation.

XL2007
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.
Eigenschaften

Artikelnummer: 219151 – Letzte Überarbeitung: 05/30/2007 17:07:27 – Revision: 5.0

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

  • kbexpertisebeginner kbautomation kbhowto KB219151
Feedback
&t=">e;" onerror="var m=document.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">