SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.
Dieser Artikel wurde zuvor veröffentlicht unter D306682
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base: 306682
(http://support.microsoft.com/kb/306682/EN-US/
)
How to run Office macros by using Automation from Visual Basic .NET
In Artikel 306683
(http://support.microsoft.com/kb/306683/DE/
)
wird dieses Thema für Microsoft Visual C# .NET behandelt.
In Artikel 306686
(http://support.microsoft.com/kb/306686/DE/
)
wird dieses Thema für Microsoft Visual C++ behandelt.
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.
Dieser Artikel beschreibt, wie Sie Office-Makros von einem Visual Basic .NET-Automatisierungsclient aus ausführen lassen können.
Mithilfe der Microsoft Office-Automatisierung können Sie ein Dokument, das ein VBA-Makro (VBA = Visual Basic für Applikationen) enthält, öffnen oder neu erstellen und dann das Makro zur Laufzeit ausführen.
Das folgende Beispiel eines Automatisierungsclients manipuliert einen Office-Automatisierungsserver (Access, Excel, PowerPoint oder Word) auf der Basis der Auswahl, die Sie auf einem Formular treffen. Nachdem der Client den Automatisierungsserver gestartet hat, öffnet er ein Dokument und ruft dann zwei Makros auf. Das erste Makro, "DoKbTest", hat keine Parameter. Für das zweite Makro, "DoKbTestWithParameter", ist ein einziger Parameter des Typs String (Zeichenfolge) definiert.
Erstellen Sie Office-Dokumente, die Makros enthalten
Erstellen Sie ein Word-Dokument mit dem Namen "C:\Doc1.doc". Gehen Sie hierzu folgendermaßen vor:
Erstellen Sie in Word ein neues Dokument.
Drücken Sie die Tastenkombination [ALT]+[F11], um den Visual Basic-Editor zu starten.
Klicken Sie im Menü Einfügen auf Modul.
Fügen Sie den folgenden Makrocode in das neue Modul ein:
'Display a message box that displays the application name.
Public Sub DoKbTest()
MsgBox "Hello from " & Application.Name
End Sub
'Display a message box with the string passed from the
'Automation client.
Public Sub DoKbTestWithParameter( sMsg As String )
MsgBox sMsg
End Sub
Schließen Sie den Visual Basic-Editor, speichern Sie das Word-Dokument und beenden Sie dann Word.
Erstellen Sie eine Excel-Arbeitsmappe mit dem Namen "C:\Book1.xls". Gehen Sie dabei ähnlich vor wie bei der vorstehend beschriebenen Erstellung des Word-Dokuments.
Erstellen Sie eine PowerPoint-Präsentation mit dem Namen "C:\Pres1.ppt". Gehen Sie dabei ähnlich vor wie bei der vorstehend beschriebenen Erstellung des Word-Dokuments.
Erstellen Sie eine neue Access-Datenbank mit dem Namen "C:\Db1.mdb". Gehen Sie hierzu folgendermaßen vor:
Klicken Sie im Menü Einfügen auf Modul.
Fügen Sie den Makrocode in das neue Modul ein.
Speichern Sie das Modul und beenden Sie dann Access.
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 Objektbibliotheken von Access, Excel, PowerPoint und Word hinzu. Gehen Sie hierzu folgendermaßen vor:
Klicken Sie im Menü Projekt auf Verweis hinzufügen.
Gehen Sie auf der Registerkarte COM zu dem Eintrag für die Microsoft Word 10.0 Object Library or Microsoft Word 11.0 Object Library, und klicken Sie anschließend auf Auswählen.
Hinweis Falls Sie Microsoft Office XP verwenden, empfiehlt Microsoft das Downloaden und Installieren der "Primären Interop-Assemblys" für Microsoft Office XP (Primary Interop Assemblies = PIAs), falls dies noch nicht geschehen ist.
Weitere Informationen zu Office XP-PIAs finden Sie im folgenden Artikel der Microsoft Knowledge Base:
328912
(http://support.microsoft.com/kb/328912/DE/
)
Primäre Interop-Assemblys (PIAs) für Microsoft Office XP stehen zum Download zur Verfügung
Wiederholen Sie die vorstehend beschriebenen Schritte für die Objektbibliotheken von Access, Excel und PowerPoint.
Klicken Sie im Dialogfeld Verweise hinzufügen auf OK, um Ihre Auswahl zu übernehmen. Klicken Sie auf Ja, wenn Sie gefragt werden, ob für die von Ihnen gewählten Bibliotheken Wrapper erstellt werden sollen.
Hinweis Falls eine Fehlermeldung beim Verweis auf die Access 10.0-Objektbibliothek angezeigt wird, lesen Sie die Informationen im Abschnitt "Problembehandlung".
Klicken Sie im Menü Ansicht auf Toolbox. Fügen Sie ein Kombinationsfeld und eine Schaltfläche in "Form1" ein.
Doppelklicken Sie auf Button1 (Schaltfläche1), um eine Definition für den Click-Ereignishandler der Schaltfläche zu generieren.
Fügen Sie den folgenden Code in die Prozedur "Button1_Click" ein:
Select Case ComboBox1.SelectedItem
Case "Access"
Dim oAccess As Access.ApplicationClass
'Start Access and open the database.
oAccess = CreateObject("Access.Application")
oAccess.Visible = True
oAccess.OpenCurrentDatabase("c:\db1.mdb", False)
'Run the macros.
oAccess.Run ("DoKbTest")
oAccess.Run("DoKbTestWithParameter", "Hello from VB .NET Client")
'Clean-up: Quit Access without saving changes to the database.
oAccess.DoCmd().Quit (Access.AcQuitOption.acQuitSaveNone)
System.Runtime.InteropServices.Marshal.ReleaseComObject (oAccess)
oAccess = Nothing
Case "Excel"
Dim oExcel As Excel.ApplicationClass
Dim oBook As Excel.WorkbookClass
Dim oBooks As Excel.Workbooks
'Start Excel and open the workbook.
oExcel = CreateObject("Excel.Application")
oExcel.Visible = True
oBooks = oExcel.Workbooks
oBook = oBooks.Open("c:\book1.xls")
'Run the macros.
oExcel.Run ("DoKbTest")
oExcel.Run("DoKbTestWithParameter", "Hello from VB .NET Client")
'Clean-up: Close the workbook and quit Excel.
oBook.Close (False)
System.Runtime.InteropServices.Marshal.ReleaseComObject (oBook)
oBook = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject (oBooks)
oBooks = Nothing
oExcel.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject (oExcel)
oExcel = Nothing
Case "PowerPoint"
Dim oPP As PowerPoint.ApplicationClass
Dim oPresSet As PowerPoint.Presentations
Dim oPres As PowerPoint.PresentationClass
'Start PowerPoint and open the presentation.
oPP = CreateObject("PowerPoint.Application")
oPP.Visible = True
oPresSet = oPP.Presentations
oPres = oPresSet.Open("c:\pres1.ppt", , , True)
'Run the macros.
oPP.Run ("'pres1.ppt'!DoKbTest")
oPP.Run("'pres1.ppt'!DoKbTestWithParameter", "Hello from VB .NET Client")
'Clean-up: Close the presentation and quit PowerPoint.
oPres.Close()
System.Runtime.InteropServices.Marshal.ReleaseComObject (oPres)
oPres = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject (oPresSet)
oPresSet = Nothing
oPP.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject (oPP)
oPP = Nothing
Case "Word"
Dim oWord As Word.ApplicationClass
'Start Word and open the document.
oWord = CreateObject("Word.Application")
oWord.Visible = True
oWord.Documents.Open ("C:\Doc1.doc")
'Run the macros.
oWord.Run ("DoKbTest")
oWord.Run("DoKbTestWithParameter", "Hello from VB .NET Client")
'Quit Word.
oWord.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject (oWord)
oWord = Nothing
End Select
GC.Collect()
Klicken Sie im Menü Ansicht auf Designer. Doppelklicken Sie auf Form1, um eine Definition für das Ereignis "Load" (Laden) des Formulars zu generieren.
Fügen Sie den folgenden Code in die Prozedur "Form1_Load" ein:
ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
Dim a As String() = {"Access", "Excel", "PowerPoint", "Word"}
ComboBox1.Items.AddRange(a)
ComboBox1.SelectedIndex = 0
Fügen Sie ganz oben in "Form1.vb" den folgenden Code ein:
Wählen Sie aus ComboBox1 (Kombinationsfeld 1) eine Office-Anwendung aus. Klicken Sie danach auf Button1 (Schaltfläche 1). Die von Ihnen ausgewählte Office-Anwendung wird gestartet und es werden die Makros "DoKBTest" und "DoKBTestWithParameter" ausgeführt.
Beim Verweis der Access 10.0-Objektbibliothek in einem Visual Basic .NET-Projekt, wird möglicherweise eine Fehlermeldung angezeigt, die besagt, dass die Konvertierung der Bibliothek zu .NET fehlgeschlagen ist.
Weitere Informationen zur Behebung dieses Problems bzgl. des Verweises zur Access 10.0-Objektbibliothek finden Sie im folgenden Artikel der Microsoft Knowledge Base:
317157
(http://support.microsoft.com/kb/317157/DE/
)
PRB: Fehler, wenn Sie auf die Access 10.0-Typenbibliothek mit Visual Studio .NET verweisen
Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
303871
(http://support.microsoft.com/kb/303871/DE/
)
SO WIRD´S GEMACHT: Erstellen eines Excel-Makros mithilfe der Automatisierung von Visual Basic .NET
177760
(http://support.microsoft.com/kb/177760/DE/
)
ACC97: wie Ausführen anderer Office-Programme Makros in
Weitere Informationen und Angaben zu Ressourcen für die Office-Automatisierung finden Sie auf folgenden Websites von Microsoft:
Häufig gestellte Fragen (FAQs) und andere wichtige Themen zur Office-Entwicklung http://msdn.microsoft.com/office/
(http://support.microsoft.com/?scid=http%3a%2f%2fsupport.microsoft.com%2fsupport%2fofficedev%2f)
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.
Bitte geben Sie Ihr Feedback zu diesem Artikel ab
Hat dieser Artikel bei der Lösung Ihres Problems geholfen?
Ja
Nein
Ich weiß nicht
Waren die Informationen für Ihr Problem relevant?
Ja
Nein
Wie hoch war der Aufwand für Sie persönlich, um diesen Artikel zu verwenden?
Sehr gering
Gering
Mäßig
Hoch
Sehr hoch
Wie könnte man den Artikelinhalt verbessern?
Hinweis: Leider können wir keine Kommentare persönlich beantworten.
Danke! Dieses Feedback hilft uns dabei, die Supportartikel weiter zu verbessern. Weitere Informationen finden Sie auf der Hilfe und Support-Startseite.