共用方式為


合併 VBA 和文件層級自訂

更新:2007 年 11 月

適用於

本主題中的資訊僅適用於指定的 Visual Studio Tools for Office 專案和 Microsoft Office 版本。

專案類型

  • 文件層級專案

Microsoft Office 版本

  • 2007 Microsoft Office system

  • Microsoft Office 2003

如需詳細資訊,請參閱依應用程式和專案類型提供的功能

您可以在屬於 Visual Studio Tools for Office 文件層級自訂一部分的 Microsoft Office Word 或 Microsoft Office Excel 文件中使用 Visual Basic for Applications (VBA) 程式碼。在所有文件層級的專案中,您可以從自訂組件呼叫文件中的 VBA 程式碼。在 2007 Microsoft Office system 的文件層級專案中,您還可以設定自己的專案來允許文件中的 VBA 程式碼呼叫自訂組件中的程式碼。如需詳細資訊,請參閱在文件層級自訂中呼叫 VBA 的程式碼

文件層級自訂中的 VBA 程式碼行為

在 Visual Studio 中開啟專案時,文件是以設計模式開啟。文件在設計模式中時,VBA 程式碼不會執行,因此您可以編輯文件和程式碼,而不執行 VBA 程式碼。

執行方案時,VBA 和 Visual Studio Tools for Office 組件中的事件處理常式都會取得文件中所引發的事件,而導致兩組程式碼同時執行。您不能事先決定程式碼執行的先後順序,必須透過每個個案測試才能知道順序。如果兩組程式碼並未經過仔細地協調及測試,可能會產生無法預期的後果。

從自訂組件中呼叫 VBA 程式碼

您可以呼叫 Word 文件中的巨集,而且可以呼叫 Excel 活頁簿中的巨集和函式。若要這麼做,請使用下列其中一種方法:

在這兩個方法中,第一個參數會識別您希望呼叫的巨集或函式名稱,而剩下的選用參數則是指定要傳遞給巨集或函式的參數。第一個參數對於 Word 和 Excel 來說各有不同的格式:

  • 對於 Word 來說,第一個參數可以是一個包含範本名稱、模組名稱和巨集名稱的任意組合字串。如果您指定文件名稱,則巨集必須位在與目前內容相關的文件中,程式碼才能加以執行 (不是任何文件中的巨集都可以執行)。

  • 對於 Excel 來說,第一個參數可以是指定巨集名稱的字串、指出函式位置的 Range,或是已註冊之 DLL (XLL) 函式的註冊 ID。如果您傳送字串,該字串就會透過使用中工作表的內容進行評估。

下列程式碼範例說明如何從 Excel 的文件層級專案呼叫名為 MyMacro 的巨集。這個範例假設已在 Sheet1 中定義了 MyMacro。

Globals.Sheet1.Application.Run("MyMacro")
Globals.Sheet1.Application.Run("MyMacro", missing, missing, missing,
    missing, missing, missing, missing, missing, missing, missing,
    missing, missing, missing, missing, missing, missing, missing,
    missing, missing, missing, missing, missing, missing, missing, 
    missing, missing, missing, missing, missing, missing);
注意事項:

如需使用全域 missing 變數來取代 Visual C# 中選擇性 (Optional) 參數的詳細資訊,請參閱使用 Visual Basic 和 C# 進行程式設計的比較

請參閱

工作

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

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

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

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

概念

在文件層級自訂中呼叫 VBA 的程式碼

在 Visual Studio 中建立 Office 方案

VBA 和 Visual Studio Tools for Office 方案比較

Office 方案中的組件概觀