Share via


合併 VBA 和文件層級自訂

您可以在屬於文件層級自訂一部分的 Microsoft Office Word 或 Microsoft Office Excel 文件中使用 Visual Basic for Applications (VBA) 程式碼。 您可以從自訂組件呼叫文件中的 VBA 程式碼,或是將專案設定為允許文件中的 VBA 程式碼呼叫自訂組件中的程式碼。 如需後者的詳細資訊,請參閱在文件層級自訂中呼叫 VBA 的程式碼

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

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

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

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

從自訂組件中呼叫 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) 參數的詳細資訊,請參閱在 Office 方案中使用 Visual Basic 或 Visual C# 進行程式設計

請參閱

工作

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

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

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

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

概念

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

VBA 和 Office 方案 (在 Visual Studio 中) 比較

Office 方案中的組件概觀

其他資源

設計和建立 Office 方案