共用方式為


逐步解說:從 Visual Basic 專案中的 VBA 呼叫程式碼

本逐步解說示範如何從文件中的 Visual Basic for Applications (VBA) 程式碼呼叫 Microsoft Office Word 文件層級自訂中的方法。 此過程涉及三個基本步驟:將方法新增至 ThisDocument 主機專案類別,將方法公開給VBA程式碼,然後從文件中的VBA程式碼呼叫該方法。

適用於: 本主題中的資訊適用於 Excel 和 Word 的文件層級專案。 如需詳細資訊,請參閱 Office 應用程式和專案類型所提供的功能

雖然本逐步解說特別使用 Word,但逐步解說所示範的概念也適用於 Excel 的文件層級專案。

本逐步解說將說明下列工作:

  • 建立包含 VBA 程式碼的文件。

  • 使用 Word 中的信任中心信任文件的位置。

  • 將方法 ThisDocument 新增至主機專案類別。

  • 將函式公開給 VBA 程式碼。

  • 從 VBA 代碼調用該方法。

備註

在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱將 Visual Studio IDE 個人化

先決條件

您需要下列組件才能完成本步驟解說:

建立包含 VBA 程式碼的文件

第一步是建立一個啟用巨集的文件,其中包含簡單的 VBA 巨集。 文件必須包含 VBA 專案,才能建立以該文件為基礎的 Visual Studio 專案。 否則,Visual Studio 無法修改 VBA 專案,以讓 VBA 程式碼呼叫自定義元件。

如果您已經有一個包含要使用的 VBA 代碼的文件,您可以略過此步驟。

建立包含 VBA 程式碼的文件

  1. 啟動 Word。

  2. 將活動文檔另存為名為 DocumentWithVBA 的 Word Macro-Enabled 文檔 (*.docm)。 將其保存在方便的位置,例如桌面。

  3. 在功能區上,按一下 [開發人員] 索引標籤。

    備註

    如果「 開發人員」 標籤不可見,您必須先顯示它。 如需詳細資訊,請參閱 如何:在功能區上顯示開發人員索引標籤

  4. 在 [ 程式碼 ] 群組中,按一下 [Visual Basic]。

    Visual Basic 編輯器隨即開啟。

  5. [專案 ] 視窗中,按兩下 [此文件]。

    物件的 ThisDocument 程式碼檔隨即開啟。

  6. 將下列 VBA 程式碼新增至程式碼檔案。 此程式碼定義了一個不執行任何動作的簡單函數。 此功能的唯一目的是確保文件中存在 VBA 專案。 這是本逐步解說中後續步驟的必要條件。

    Sub EmptySub()
    End Sub
    
  7. 儲存文件並結束 Word。

建立專案

現在,您可以為 Word 建立文件層級專案,以使用您先前建立的啟用巨集的文件。

建立新專案

  1. 啟動 Visual Studio。

  2. 在 [檔案] 功能表上,指向 [新增],然後按一下 [專案]。 如果您的 IDE 設定為使用 Visual Basic 開發設定,請在 [ 檔案 ] 功能表上,按一下 [新增專案]。

  3. 在範本窗格中,展開 [Visual Basic],然後展開 [Office/SharePoint]。

  4. 選取 [Office 增益集] 節點。

  5. 在專案範本清單中,選取 [Word 2010 文件 ] 或 [Word 2013 文件] 專案。

  6. 在 [ 名稱 ] 方塊中,輸入 CallingCodeFromVBA

  7. 按一下 [確定]

    Visual Studio Tools for Office 專案嚮導 隨即開啟。

  8. 選取 [複製現有文件],然後在 [ 現有文件的完整路徑 ] 方塊中,指定您稍早建立的 DocumentWithVBA 文件的位置。 如果您使用自己的啟用巨集的文件,請改為指定此文件的位置。

  9. 按一下完成

    Visual Studio 會在設計工具中開啟 DocumentWithVBA 檔,並將 CallingCodeFromVBA 專案新增至 [方案總管]。

信任文件的位置

在您能夠將解決方案中的程式碼公開給文件中的 VBA 程式碼之前,必須先信任文件中的 VBA 程式碼以運行。 有幾種方法可以做到這一點。 在這個逐步解說中,請信任 Word 中 信任中心 中文件的位置。

信任文件的位置

  1. 啟動 Word。

  2. 按一下 檔案 標籤。

  3. 按一下 Word 選項按鈕

  4. 在類別窗格中,按一下 [信任中心]。

  5. 在詳細資料窗格中,按一下 [信任中心設定]。

  6. 在類別窗格中,按一下 [信任的位置]。

  7. 在詳細資料窗格中,按一下 新增位置

  8. [Microsoft Office 信任的位置 ] 對話方塊中,瀏覽至包含 CallingCodeFromVBA 專案的資料夾。

  9. 選取 此位置的子資料夾也被視為受信任

  10. [Microsoft Office 信任的位置 ] 對話方塊中,按一下 [ 確定]。

  11. [信任中心] 對話方塊中,按一下 [ 確定]。

  12. [Word 選項] 對話方塊中,按一下 [ 確定]。

  13. 結束 Word。

將方法新增至 ThisDocument 類別

現在 VBA 專案已設定好,請將一個方法新增至 ThisDocument 主機項目類別,以便您可以從 VBA 程式碼中呼叫。

將方法新增至 ThisDocument 類別

  1. [方案總管] 中,以滑鼠右鍵按一下 ThisDocument.vb,然後按一下 [ 檢視程式碼]。

    ThisDocument.vb檔案會在程式碼編輯器中開啟。

  2. 將下列方法新增至 ThisDocument 類別。 此方法在文件開頭建立一個包含兩行和兩列的表格。 參數指定顯示在第一列中的文字。 在本逐步解說的稍後部分,您將從檔中的 VBA 程式碼呼叫這個方法。

    Public Sub CreateTable(ByVal firstColumnHeader As String, _
        ByVal secondColumnHeader As String)
    
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        Dim table1 As Word.Table = Me.Tables.Add(Me.Paragraphs(1).Range, 2, 2)
    
        With table1
            .Style = "Table Professional"
            .Cell(1, 1).Range.Text = firstColumnHeader
            .Cell(1, 2).Range.Text = secondColumnHeader
        End With
    End Sub
    
  3. 建置專案。

將方法公開給 VBA 程式碼

若要將 CreateTable 方法公開給檔中的 VBA 程式碼,請將 ThisDocumentEnableVbaCallers 屬性設定為 True

將方法公開給 VBA 程式碼

  1. 方案總管 中,按兩下滑鼠 ThisDocument.vb

    DocumentWithVBA 檔案會在設計工具中開啟。

  2. [屬性] 視窗中,選取 EnableVbaCallers 屬性,並將值變更為 True

  3. 在顯示的訊息中按一下 確定

  4. 建置專案。

從VBA代碼調用該方法

您現在可以從文檔中的 VBA 代碼調用該 CreateTable 方法。

備註

在本逐步指南中,您會在偵錯專案的同時將 VBA 程式碼新增到文件。 您新增至此檔的 VBA 程式碼將會在您下次建置專案時覆寫,因為 Visual Studio 會將建置輸出資料夾中的檔取代為主要專案資料夾中的檔複本。 如果要保存VBA代碼,可以將其複製到項目文件夾中的文檔中。 如需詳細資訊,請參閱結合 VBA 和文件層級自訂。

從 VBA 程式碼呼叫方法的步驟

  1. 請按 F5 執行您的專案。

  2. [開發人員] 索引標籤的 [ 程式碼 ] 群組中,按一下 [Visual Basic]。

    Visual Basic 編輯器隨即開啟。

  3. 「插入」功能表上,按一下「模組」。

  4. 將下列程式碼新增至新模組。

    此程式碼會呼叫 CreateTable 自訂元件中的方法。 巨集會使用ThisDocument物件的CallVSTOAssembly屬性來存取這個方法。 當您在本逐步解說稍早設定 EnableVbaCallers 屬性時,會自動產生此屬性。

    Sub CreateTable()
        Call ThisDocument.CallVSTOAssembly.CreateTable("Employee Name", "Start Date")
    End Sub
    
  5. F5

  6. 確認已將新表格新增至文件。

  7. 關閉 Word,且不儲存變更。

後續步驟

您可以在下列主題中深入瞭解如何從 VBA 呼叫 Office 解決方案中的程式碼: