主項目和主控制項概觀

更新: 2008 年 7 月

適用於

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

文件層級專案

  • Excel 2003

  • Excel 2007

  • Word 2003

  • Word 2007

應用程式層級專案

  • Excel 2007

  • Word 2007

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

主項目和主控制項就是協助提供 Visual Studio Tools for Office 方案之程式撰寫模型 (Programming Model) 的類別。它們會以較接近與 Managed 物件 (例如 Windows Form) 互動的方式,與以 COM 為基礎之 Microsoft Office Word 和 Microsoft Office Excel 的物件模型進行互動。

主項目

在 Visual Studio Tools for Office 專案中,主項目是位於物件模型階層架構最上層的類別。Visual Studio Tools for Office 會為 Word 和 Excel 方案定義下列主項目:

這其中每一個類別都會擴充原本就存在於 Word 或 Excel 物件模型 (稱為「原生 Office 物件」(Native Office Object)) 中的類別。例如,Microsoft.Office.Tools.Word.Document 主項目會擴充 Microsoft.Office.Interop.Word.Document 類別,此類別是定義在 Word 的主要 Interop 組件中。

主項目通常與對應的 Office 物件具有相同的基本功能,但是增強了下列功能:

  • 裝載 Managed 控制項 (其中包括主控制項和 Windows Form 控制項) 的能力。

  • 更豐富的事件模型。在原生 Word 和 Excel 物件模型中的一些文件、活頁簿和工作表事件只能在應用程式層級上引發。主項目會在文件層級提供這些事件,以便特定文件的事件更容易進行處理。

了解文件層級專案中的主項目

在文件層級專案中,主項目會為程式碼提供進入點 (Entry Point),也會提供協助您開發方案的設計工具。

Microsoft.Office.Tools.Word.DocumentMicrosoft.Office.Tools.Excel.Worksheet 主項目具有類似 Windows Form 設計工具那樣可視覺化表示文件或工作表的設計工具。您可以使用這個設計工具,直接在 Word 或 Excel 中修改文件或工作表的內容,以及將控制項拖曳至設計介面。如需詳細資訊,請參閱Document 主項目Worksheet 主項目

Microsoft.Office.Tools.Excel.Workbook 主項目不會做為具有使用者介面之控制項的容器。相反地,這個主項目設計工具的作用就像是元件匣,可讓您將元件 (例如 DataSet) 拖曳至其設計介面上。如需詳細資訊,請參閱Workbook 主項目

您無法在文件層級專案中以程式設計方式建立主項目。請改用 Visual Studio Tools for Office 在設計階段自動產生於專案中的 ThisDocument、ThisWorkbook 或 Sheetn 類別。這些產生的類別衍生自主項目類別,並且會提供程式碼的進入點。如需詳細資訊,請參閱主項目和主控制項的程式設計限制

了解應用程式層級專案中的主項目

根據預設,建立應用程式層級增益集時,您無法存取任何主項目。不過,從 Visual Studio 2008 Service Pack 1 (SP1) 開始,您可以透過增益集,在執行階段產生 Microsoft.Office.Tools.Word.DocumentMicrosoft.Office.Tools.Excel.WorkbookMicrosoft.Office.Tools.Excel.Worksheet 主項目。

產生主項目後,您可以執行像是將控制項加入至文件以及在特定文件中建立可識別之智慧標籤等工作。如需詳細資訊,請參閱在應用程式層級增益集的執行階段中擴充 Word 文件和 Excel 活頁簿

主控制項

主控制項會擴充 Word 和 Excel 物件模型中的各種使用者介面 (UI) 物件,例如 Microsoft.Office.Interop.Word.ContentControlMicrosoft.Office.Interop.Excel.Range 物件。

下列主控制項適用於 Excel 專案:

下列主控制項適用於 Word 專案:

加入至 Office 文件的主控制項與原生 Office 物件有類似的行為方式,但是主控制項還具備額外的功能,包括事件和資料繫結 (Data Binding) 能力。例如,當您要在 Excel 中擷取原生 Microsoft.Office.Interop.Excel.Range 物件的事件時,必須先處理工作表的變更事件。然後,您必須判斷該變更是否在 Microsoft.Office.Interop.Excel.Range 中發生。相反地,Microsoft.Office.Tools.Excel.NamedRange 主控制項具有您可直接處理的 Change 事件。

主項目與主控制項之間的關係,非常類似 Windows Form 與 Windows Form 控制項之間的關係。將 Microsoft.Office.Tools.Excel.NamedRange 控制項放在 Microsoft.Office.Tools.Excel.Worksheet 主項目上,就像在 Windows Form 上放置文字方塊控制項一樣。下圖顯示主項目和主控制項之間的關係。

主項目和主控制項之間的關聯性

此外,Visual Studio Tools for Office 可讓您在 Office 方案中使用 Windows Form 控制項,方法是直接將控制項加入至 Word 和 Excel 文件介面。如需詳細資訊,請參閱 Office 文件上的 Windows Form 控制項概觀

注意事項:

不支援將主控制項或 Windows Form 控制項加入至 Word 子文件。

將主控制項加入至文件

在文件層級專案中,您可以使用下列方式,在設計階段將主控制項加入至 Word 文件或 Excel 工作表:

  • 依照加入原生物件的相同方式,在設計階段將主控制項加入至文件。

  • 將主控制項從 [工具箱] 拖曳到文件和工作表上。您可以在 Excel 專案的 [Excel 控制項] 索引標籤中使用 Excel 主控制項,並在 Word 專案的 [Word 控制項] 索引標籤中使用 Word 主控制項。

  • 將主控制項從 [資料來源] 視窗拖曳到文件和工作表上。這可讓您加入已經繫結至資料的控制項。如需詳細資訊,請參閱將資料繫結至控制項

在文件層級專案中,以及從 SP1 開始的應用程式層級增專案中,您也可以在執行階段將某些主控制項加入至文件。如需詳細資訊,請參閱在執行階段將控制項加入至 Office 文件

如需如何將主控制項加入至文件的詳細資訊,請參閱下列主題:

命名主控制項

當您將主控制項從 [工具箱] 拖曳到文件時,會自動使用控制項型別來命名控制項,並在結尾處加上一個累加號碼。例如,書籤會命名為 bookmark1、bookmark2 等等。如果使用 Word 或 Excel 的原生功能來加入控制項,可以在建立控制項時為它指定特定的名稱。您也可以變更 [屬性] 視窗中的 [Name] 屬性,重新命名控制項。

注意事項:

您不能使用保留字為主控制項命名。例如,如果將 NamedRange 控制項加入至工作表,並將名稱變更為 System,則建置專案時會發生錯誤。

刪除主控制項

在文件層級專案中,您可以在設計階段刪除主控制項,方法是選取 Excel 工作表或 Word 文件上的控制項,然後按 DELETE 鍵。不過,您必須使用 Excel 中的 [定義名稱] 對話方塊來刪除 NamedRange 控制項。如需詳細資訊,請參閱 HOW TO:在設計階段刪除 NamedRange 控制項

如果在設計階段將主控制項加入至文件,則不應在執行階段以程式設計的方式將其移除,否則當您下次嘗試在程式碼中使用控制項時,將會擲回例外狀況。主控制項的 Delete 方法,只會移除在執行階段加入至文件的主控制項。如果呼叫主控制項的 Delete 方法,而該主控制項是在設計階段建立,則會擲回例外狀況。

例如,NamedRangeDelete 方法只有在它是以程式設計方式加入至工作表時 (即動態建立的主項目),才能成功刪除 NamedRange。將控制項名稱傳遞至 Worksheet.ControlsDocument.Controls 屬性的 Remove 方法,也可以移除動態建立的主控制項。如需詳細資訊,請參閱在執行階段將控制項加入至 Office 文件

如果使用者在執行階段從文件刪除主控制項,方案可能會以無法預期的方式失敗。您可以使用 Word 和 Excel 中的文件保護功能,防止主控制項遭刪除。如需詳細資訊,請參閱 Word 文件保護技巧範例Excel 文件保護技巧範例

注意事項:

請勿在文件或工作表的 Shutdown 事件處理常式期間以程式設計方式移除控制項。當 Shutdown 事件發生時,UI 項目便無法再使用。如果您想要在應用程式關閉前移除控制項,請將程式碼加入其他事件處理常式,例如 BeforeClose 或 BeforeSave。

對主控制項事件進行程式設計

主控制項擴充 Office 物件的其中一種方法是透過加入事件。例如,Excel 中的 Microsoft.Office.Interop.Excel.Range 物件和 Word 中的 Microsoft.Office.Interop.Word.Bookmark 物件並沒有事件,但是 Visual Studio Tools for Office 可藉由加入可程式化的事件來擴充這些物件。您可以存取這些事件並對其進行編碼,使用的方式與存取 Windows Form 上控制項的事件相同:透過 Visual Basic 中的事件下拉式清單,以及 C# 中的事件屬性頁。如需詳細資訊,請參閱逐步解說:針對 NamedRange 控制項的事件進行程式設計

注意事項:

請勿在 Excel 中將 Application 物件的 EnableEvents 屬性設定為 false。將此屬性設定為 false,會導致 Excel 無法引發任何事件,包括主控制項的事件在內。

請參閱

概念

內容控制項

將資料繫結至控制項

主項目和主控制項的程式設計限制

其他資源

Word 主控制項

Excel 主控制項

Office 文件上的控制項

變更記錄

日期

記錄

原因

2008 年 7 月

加入有關透過應用程式層級增益集來使用主項目和主控制項的資訊。

SP1 功能變更。