共用方式為


在 Microsoft Office 應用程式中控制其他 Microsoft Office 應用程式

如果想要在 Microsoft Office 應用程式中執行某程式碼,而該程式碼能夠執行其他應用程式的物件,則應遵循以下步驟。

若要執行程序代碼

  1. 在 [參考] 對話框 ([工具] 功能表) 中,設定其他應用程式類型連結庫的參考。 然後,對象、屬性和方法會出現在對象瀏覽器中,而且會在編譯時期檢查語法。 您也可以取得內容相關說明。

  2. 將要參照其他應用程式之物件的物件變數宣告為特定的類型。 使用提供物件的應用程式名稱來限定每個類型。 例如,下列語句會宣告指向 Microsoft Word 檔的變數,以及另一個參照 Microsoft Excel 活頁簿的變數。

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

    注意 如果您想要提早系結程序代碼,就必須遵循上述步驟。

  3. 使用 CreateObject 函式搭配您想要在其他應用程式中使用之物件的 OLE 程式設計標識碼 ,如下列範例所示。 若要查看其他應用程式的會話,請將 Visible 屬性設定為 True

      Dim appWD As Word.Application 
    
    Set appWD = CreateObject("Word.Application") 
    appWd.Visible = True
    
  4. 將屬性和方法應用於該變數中包含的物件。 例如,以下指令將新建一個 Word 文件。

    Dim appWD As Word.Application 
    
    Set appWD = CreateObject("Word.Application") 
    appWD.Documents.Add
    
  5. 完成使用另一個應用程式時,請使用 Quit 方法來關閉它,然後將其物件變數設定為 Nothing 以釋放它所使用的任何記憶體,如下列範例所示。

    appWd.Quit 
    Set appWd = Nothing
    

範例程式代碼提供者:Bill Jelen,MrExcel.com 下列程式代碼範例會為電子表格中的每個數據列建立新的 Microsoft Office Word 檔案。

' 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

範例程式代碼提供者:Microsoft Wallentin,VSTO & .NET & Excel 本範例會從包含三個值的具名範圍W_Data取單元格值,並將這些值插入 Word 檔中。 這些值會插入名為 td1、td2td3 的書籤位置。 若要執行此範例,您必須在活頁簿中具有名為 W_Data 的範圍,其中包含 Sheet1 上的三個值。 您必須將名為Test.docx 的 Word 檔儲存在與 Excel 活頁簿相同的位置,而 Word 檔必須有三個名為 td1td2td3 的書籤。

' 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

關於參與者

MVP Bill Jelen 撰寫了二十幾本有關 Microsoft Excel 的書。 他與 Leo Laporte 是 TechTV 的常客,也是 MrExcel.com 的站長,此網站包含超過 300,000 筆有關 Excel 的問題和解答。

Dennis Wallentin 是 VSTO & .NET & Excel 的作者,這個部落格著重在適用於 Excel 和 Excel 服務的 .NET Framework 解決方案。 Dennis 在開發 Excel 解決方案方面已經有超過 20 年的經驗,也是 "Professional Excel Development: The Definitive Guide to Developing Applications Using Microsoft Excel, VBA and .NET (2nd Edition)" 的共同作者。

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應