Steuern einer Microsoft Office-Anwendung aus einer anderenControlling One Microsoft Office Application from Another

Wenn in einer Microsoft Office-Anwendung Code ausgeführt werden soll, der mit Objekten einer anderen Anwendung arbeitet, befolgen Sie diese Schritte:If you want to run code in one Microsoft Office application that works with the objects in another application, follow these steps.

So führen Sie den Code ausTo run the code

  1. Legen Sie im Dialogfeld Verweise (Menü Tools) einen Verweis auf die Typbibliothek in der anderen Anwendung fest.Set a reference to the other application's type library in the References dialog box (Tools menu). Die Objekte, Eigenschaften und Methoden werden dann im Objektbrowser angezeigt und die Syntax wird zur Kompilierzeit überprüft.Then, the objects, properties, and methods will appear in the Object Browser and the syntax will be checked at compile time. Sie können auch die kontextabhängige Hilfe für diese abrufen.You can also get context-sensitive Help on them.

  2. Deklarieren Sie Objektvariablen, die auf die Objekte in der anderen Anwendung verweisen sollen, als bestimmte Typen.Declare object variables that will refer to the objects in the other application as specific types. Geben Sie für jeden Typ den Namen der Anwendung an, die das Objekt bereitstellt.Qualify each type with the name of the application that is supplying the object. Die folgende Anweisung deklariert beispielsweise eine Variable, die auf ein Microsoft Word-Dokument und eine weitere, die auf eine Microsoft Excel-Arbeitsmappe verweist.For example, the following statement declares a variable that points to a Microsoft Word document and another that refers to a Microsoft Excel workbook.

      Dim appWD As Word.Application, wbXL As Excel.Workbook
    

    Hinweis Wenn der Code früh gebunden werden soll, müssen Sie die vorherigen Schritte befolgen.Note You must follow the preceding steps if you want your code to be early bound.

  3. Verwenden Sie die CreateObject-Funktion mit denOLE-ProgIDs des Objekts, mit denen Sie in der anderen Anwendung arbeiten möchten, wie im folgenden Beispiel dargestellt.Use the CreateObject function with the OLE Programmatic Identifiers of the object you want to work with in the other application, as shown in the following example. Legen Sie zum Anzeigen der Sitzung der anderen Anwendung die Visible -Eigenschaft auf True fest.To see the session of the other application, set the Visible property to True.

      Dim appWD As Word.Application 
    
    Set appWD = CreateObject("Word.Application") 
    appWd.Visible = True
    
  4. Wenden Sie die Eigenschaften und Methoden auf das in der Variablen enthaltene Objekt an.Apply properties and methods to the object contained in the variable. Mit der folgenden Anweisung wird beispielsweise ein neues Word-Dokument erstellt.For example, the following instruction creates a new Word document.

    Dim appWD As Word.Application 
    
    Set appWD = CreateObject("Word.Application") 
    appWD.Documents.Add
    
  5. Verwenden Sie nach Abschluss der Arbeit mit der anderen Anwendung die Quit-Methode zum Schließen der Anwendung, und legen Sie dann ihre Objektvariable auf Nothing fest, um den von dieser verwendeten Speicher, wie im folgenden Beispiel dargestellt, freizugeben.When finished working with the other application, use the Quit method to close it, and then set its object variable to Nothing to free any memory it is using, as shown in the following example.

    appWd.Quit 
    Set appWd = Nothing
    

Beispielcode bereitgestellt von: Bill Jelen, MrExcel.com im folgenden Codebeispiel wird für jede Datenzeile in einer Kalkulationstabelle eine neue Microsoft Office Word-Datei erstellt.Sample code provided by: Bill Jelen, MrExcel.com The following code example creates a new Microsoft Office Word file for each row of data in a spreadsheet.

' You must pick Microsoft Word Object Library from Tools>References
' in the VB editor to execute Word commands.
Sub ControlWord()
    Dim appWD As Word.Application
    ' Create a new instance of Word and make it visible
    Set appWD = CreateObject("Word.Application.12")
    appWD.Visible = True

    ' Find the last row with data in the spreadsheet
    FinalRow = Range("A9999").End(xlUp).Row
    For i = 1 To FinalRow
        ' Copy the current row
        Worksheets("Sheet1").Rows(i).Copy
        ' Tell Word to create a new document
        appWD.Documents.Add
        ' Tell Word to paste the contents of the clipboard into the new document.
        appWD.Selection.Paste
        ' Save the new document with a sequential file name.
        appWD.ActiveDocument.SaveAs Filename:="File" & i
        ' Close the new Word document.
        appWD.ActiveDocument.Close
    Next i
    ' Close the Word application.
    appWD.Quit
End Sub

Beispielcode bereitgestellt von: Dennis Wallentin, VSTO & .net & Excel in diesem Beispiel werden die Zellenwerte eines benannten Bereichs W_Datamit drei Werten verwendet, und diese Werte werden in ein Word-Dokument eingefügt.Sample code provided by: Dennis Wallentin, VSTO & .NET & Excel This example takes the cells values from a named range, W_Data, that contains three values and inserts those values into a Word document. Die Werte werden an den Stellen der Textmarken mit den Namen td1, td2 und td3 eingefügt.The values are inserted at bookmarked locations named td1, td2, and td3. Zum Ausführen dieses Beispiels muss ein Bereich mit dem Namen W_Data vorhanden sein, der drei Werte für Sheet1 in der Arbeitsmappe enthält.For this example to run, you must have a range named W_Data that contains three values on Sheet1 in the workbook. Es muss auch ein Word-Dokument mit dem Namen Test.docx unter dem gleichen Speicherort wie die Excel-Arbeitsmappe gespeichert sein, und das Word-Dokument muss über drei Textmarken mit den Namen td1, td2 und td3 verfügen.You must have a Word document named Test.docx saved in the same location as the Excel workbook, and the Word document must have three bookmarks named td1, td2, and td3.

' You must pick Microsoft Word Object Library from Tools>References
' in the Visual Basic editor to execute Word commands.

Option Explicit

Sub Add_Single_Values_Word()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim wdRange1 As Word.Range
Dim wdRange2 As Word.Range
Dim wdRange3 As Word.Range

Dim wbBook As Workbook
Dim wsSheet As Worksheet

Dim vaData As Variant

Set wbBook = ThisWorkbook
Set wsSheet = wbBook.Worksheets("Sheet1")

vaData = wsSheet.Range("W_Data").Value

' Instantiate the Word Objects.
Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open(wbBook.Path & "\Test.docx")

With wdDoc
    Set wdRange1 = .Bookmarks("td1").Range
    Set wdRange2 = .Bookmarks("td2").Range
    Set wdRange3 = .Bookmarks("td3").Range
End With

' Write values to the bookmarks.
wdRange1.Text = vaData(1, 1)
wdRange2.Text = vaData(2, 1)
wdRange3.Text = vaData(3, 1)

With wdDoc
    .Save
    .Close
End With

wdApp.Quit

' Release the objects from memory.
Set wdRange1 = Nothing
Set wdRange2 = Nothing
Set wdRange3 = Nothing
Set wdDoc = Nothing
Set wdApp = Nothing

End Sub

Informationen zu den MitwirkendenAbout the Contributors

MVP Bill Jelen hat über zwei Dutzend Bücher über Microsoft Excel verfasst.MVP Bill Jelen is the author of more than two dozen books about Microsoft Excel. Er ist regelmäßiger Gast auf TechTV mit Leo Laporte und hostet MrExcel.com, ein Forum mit über 300.000 Fragen und Antworten zu Excel.He is a regular guest on TechTV with Leo Laporte and is the host of MrExcel.com, which includes more than 300,000 questions and answers about Excel.

Dennis Wallentin ist Autor des Blogs VSTO & .NET & Excel, dessen Schwerpunkt auf .NET Framework-Lösungen für Excel und Excel Services liegt.Dennis Wallentin is the author of VSTO & .NET & Excel, a blog that focuses on .NET Framework solutions for Excel and Excel Services. Dennis entwickelt Excel-Lösungen seit über 20 Jahren und ist Co-Autor von "Professional Excel Development: The Definitive Guide to Developing Applications Using Microsoft Excel, VBA and .NET (2nd Edition)."Dennis has been developing Excel solutions for over 20 years and is also the coauthor of "Professional Excel Development: The Definitive Guide to Developing Applications Using Microsoft Excel, VBA and .NET (2nd Edition)."

Support und FeedbackSupport and feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation?Have questions or feedback about Office VBA or this documentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.