共用方式為


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

本逐步解說示範如何從文件中的 Visual Basic for Applications (VBA) 程式碼,呼叫 Microsoft Office Word 之文件層級自訂中的方法。 這個程序牽涉三個基本步驟:將方法加入至 ThisDocument 主項目類別 (Class)、將方法公開 (Expose) 至 VBA 程式碼,然後從文件中的 VBA 程式碼呼叫此方法。

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

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

這個逐步解說將說明下列工作:

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

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

  • 將方法加入至 ThisDocument 主項目類別。

  • 將方法公開至 VBA 程式碼。

  • 從 VBA 程式碼呼叫方法。

注意事項注意事項

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

視訊的連結 如需觀看相關示範影片,請參閱如何:從 VBA 呼叫 VSTO 程式碼?(英文)。

必要條件

您需要下列元件才能完成此逐步解說:

-

包含 Microsoft Office 開發者工具的 Visual Studio 2010 版本。 如需詳細資訊,請參閱[設定電腦以開發 Office 方案](bb398242\(v=vs.100\).md)。
  • Word 2007 或 Word 2010。

建立包含 VBA 程式碼的文件

第一個步驟是建立已啟用巨集的文件,該文件包含簡單 VBA 巨集。 文件必須先包含 VBA 專案,您才能根據該文件建立 Visual Studio 專案。 否則,Visual Studio 無法修改 VBA 專案,讓 VBA 程式碼能夠呼叫自訂組件。

如果您已經有包含想使用之 VBA 程式碼的文件,則可略過這個步驟。

若要建立包含 VBA 程式碼的文件

  1. 啟動 Word。

  2. 使用 DocumentWithVBA 這個名稱,將現用文件儲存為 Word [啟用巨集的文件 (*.docm)]。 將它儲存在方便取用的位置,如桌面。

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

    注意事項注意事項

    如果 [開發人員] 索引標籤沒有顯示,您必須先使其顯示。 如需詳細資訊,請參閱 HOW TO:在功能區顯示開發人員索引標籤

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

    Visual Basic 編輯器隨即開啟。

  5. 按兩下 [專案] 視窗中的 [ThisDocument]。

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

  6. 將下列 VBA 程式碼加入至程式碼檔案。 此程式碼會定義毫無作用的簡單函式。 這個函式的唯一目的在於確保 VBA 專案存在於文件中。 本逐步解說中的後續步驟需要用到此函式。

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

建立專案

您現在即可建立 Word 的文件層級專案,而該專案會使用您先前建立之啟用巨集的文件。

若要建立新的專案

  1. 啟動 Visual Studio。

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

  3. 在範本窗格中,依序展開 [Visual Basic] 和 [Office]。

  4. 選取 [2010] 或 [2007] 節點。

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

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

  7. 按一下 [確定]。

    [Visual Studio Tools for Office 專案精靈] 便會開啟。

  8. 選取 [複製現有文件],然後在 [現有文件的完整路徑] 方塊中,指定您先前建立之 DocumentWithVBA 文件的位置。 如果您是使用自己的已啟用巨集之文件,則請指定該文件的位置。

  9. 按一下 [完成]。

    Visual Studio 會在設計工具中開啟 DocumentWithVBA 文件,並將 [CallingCodeFromVBA] 專案加入至 [方案總管]。

信任文件的位置

您必須先信任文件中要執行的 VBA,才能將方案中的程式碼公開至文件中的 VBA 程式碼。 有幾個方式可做到這點。 對於此逐步解說,是在 Word 的 [信任中心] 中信任文件的位置。

若要信任文件的位置

  1. 啟動 Word。

  2. 按一下 [檔案] 索引標籤 (適用於 Word 2010) 或 [Microsoft Office 按鈕] (適用於 Word 2007)。

  3. 按一下 [Word 選項] 按鈕。

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

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

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

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

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

  9. 選取 [此位置的子資料夾也受信任]。

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

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

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

  13. 結束 Word。

將方法加入至 ThisDocument 類別

目前已設定 VBA 專案,將方法加入至您可以從 VBA 程式碼呼叫的 ThisDocument 主項目類別。

若要將方法加入至 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 程式碼,請將 ThisDocument 主項目的 [EnableVbaCallers] 屬性設定為 [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 方案中的程式碼:

請參閱

工作

HOW TO:公開程式碼給 Visual Basic 專案中的 VBA

HOW TO:公開程式碼給 Visual C# 專案中的 VBA

逐步解說:在 Visual C# 專案中呼叫 VBA 的程式碼

其他資源

合併 VBA 和文件層級自訂

文件層級自訂程式設計