文件層級自訂程式設計

當您使用文件層級自訂擴充 Microsoft Office Word 或 Microsoft Office Excel 時,可以執行下列工作:

  • 使用物件模型自動化應用程式。

  • 將控制項加入至文件介面。

  • 從自訂組件 (Assembly) 呼叫文件中的 Visual Basic for Applications (VBA) 程式碼。

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

  • 在文件位於未安裝 Microsoft Office 的伺服器上時,管理文件的某些方面。

  • 自訂應用程式的使用者介面 (UI)。

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

在文件層級專案中撰寫程式碼時,某些方面會與 Visual Studio 中其他類型的專案不同。 在這些差異中,有許多都是因為將 Office 物件模型公開為 Managed 程式碼的方式所造成。 如需詳細資訊,請參閱撰寫 Office 方案中的程式碼

如需您可以使用 Visual Studio 中的 Office 開發工具建立之文件層級自訂和其他類型方案的一般資訊,請參閱 Office 方案開發概觀

使用文件層級專案中產生的類別

當您建立文件層級專案時,Visual Studio 會自動在專案中產生類別,供您開始撰寫程式碼。 Visual Studio 會針對 Word 和 Excel 產生不同的類別:

  • 在 Word 的文件層級專案中,類別預設名為 ThisDocument。

  • Excel 的文件層級專案具有多個產生的類別:一個用於活頁簿本身,一個用於每個工作表。 根據預設,這些類別具有下列名稱:

    • ThisWorkbook

    • Sheet1

    • Sheet2

    • Sheet3

產生的類別包含會在文件開啟或關閉時呼叫的事件處理常式。 若要在文件開啟時執行程式碼,請將程式碼加入至 Startup 事件處理常式。 若要在文件即將關閉之前執行程式碼,則請將程式碼加入至 Shutdown 事件處理常式。 如需詳細資訊,請參閱 Office 專案中的事件

了解產生之類別的設計

在目標為 .NET Framework 3.5 的專案中,產生的類別是從 Visual Studio Tools for Office Runtime 中的下列「主項目」(Host Item) 類別衍生大部分成員和行為: 

  • ThisDocument:衍生自 Microsoft.Office.Tools.Word.Document

  • ThisWorkbook:衍生自 Microsoft.Office.Tools.Excel.Workbook

  • Sheetn:衍生自 Microsoft.Office.Tools.Excel.Worksheet

主項目是位於 Office 專案中物件模型階層最上層的型別,這些項目會擴充 Office 主要 Interop 組件 (PIA) 中對應物件的行為。 如需主項目的詳細資訊,請參閱主項目和主控制項概觀

在目標為 .NET Framework 4 的專案中,Visual Studio Tools for Office Runtime 中的主項目型別是介面,因此產生的類別無法自其中衍生實作。 相反地,產生的類別會改從下列基底類別衍生大部分的成員:

這些基底類別會將所有成員的呼叫重新導向至 Visual Studio Tools for Office Runtime 中對應主項目介面的內部實作。 例如,如果您呼叫 ThisDocument 類別的 Protect 方法,Microsoft.Office.Tools.Word.DocumentBase 類別就會將此呼叫重新導向至 Visual Studio Tools for Office Runtime 中 Microsoft.Office.Tools.Word.Document 介面的內部實作。如需目標為 .NET Framework 3.5 和 .NET Framework 4 的專案在 Visual Studio Tools for Office Runtime 中彼此之間差異的詳細資訊,請參閱 Visual Studio Tools for Office Runtime 概觀

存取主應用程式的物件模型

若要存取主應用程式的物件模型,請使用專案中產生之類別的成員。 這些類別各自對應至 Excel 或 Word 物件模型中的一個物件,並且大多包含相同的屬性、方法和事件。 例如,Word 文件層級專案中 ThisDocument 類別與 Word 物件模型中的 Microsoft.Office.Interop.Word.Document 物件提供的成員大部分相同。

下列程式碼範例顯示如何使用 Word 物件模型儲存屬於 Word 文件層級自訂一部分的文件。 這個範例適合從 ThisDocument 類別執行。

Me.Save()
this.Save();

若要從 ThisDocument 類別外執行同樣的動作,請使用 Globals 物件存取 ThisDocument 類別。 例如,如果您要在執行窗格 UI 中包含 [Save] 按鈕,可以將這個程式碼加入至執行窗格程式碼檔案。

Globals.ThisDocument.Save()
Globals.ThisDocument.Save();

因為 ThisDocument 類別會從 Microsoft.Office.Tools.Word.Document 主項目取得大部分成員,所以這個程式碼中呼叫的 Save 方法實際上是 Microsoft.Office.Tools.Word.Document 主項目的 Save 方法。 這個方法對應至 Word 物件模型中 Microsoft.Office.Interop.Word.Document 物件的 Save 方法。

如需使用 Word 和 Excel 物件模型的詳細資訊,請參閱 Word 物件模型概觀Excel 物件模型概觀

如需 Globals 物件的詳細資訊,請參閱全域存取 Office 專案中的物件

將控制項加入至文件

若要自訂文件的 UI,您可以將 Windows Form 控制項或「主控制項」(Host Control) 加入至文件介面。 藉由合併不同組的控制項並撰寫程式碼,您可以將控制項繫結至資料、從使用者收集資訊,以及回應使用者動作。

主控制項是一種會擴充 Word 和 Excel 物件模型中某些物件的類別。 例如,Microsoft.Office.Tools.Excel.ListObject 主控制項會提供 Excel 中 Microsoft.Office.Interop.Excel.ListObject 的所有功能。 但是,Microsoft.Office.Tools.Excel.ListObject 主控制項還多了一些事件和資料繫結 (Data Binding) 功能。

如需詳細資訊,請參閱主項目和主控制項概觀Office 文件上的 Windows Form 控制項概觀

合併 VBA 和文件層級自訂

您可以在屬於文件層級自訂一部分的文件中使用 VBA 程式碼。 您可以從自訂組件呼叫文件中的 VBA 程式碼,也可以將專案設定為允許文件中的 VBA 程式碼呼叫自訂組件中的程式碼。

如需詳細資訊,請參閱合併 VBA 和文件層級自訂

管理伺服器上的文件

您可以在未安裝 Microsoft Office Word 或 Microsoft Office Excel 的伺服器上管理文件層級自訂的數個不同方面。 例如,您可以存取及修改文件之資料快取中的資料。 您也可以管理與文件相關聯的自訂組件。 例如,您可以用程式設計的方式從文件中移除組件,讓文件不再執行程式碼,或者用程式設計的方式將組件附加至文件。

如需詳細資訊,請參閱使用 ServerDocument 類別管理伺服器上的文件

自訂 Microsoft Office 應用程式的使用者介面

您可以使用文件層級自訂,透過下列方式自訂 Word 和 Excel 的 UI:

如需自訂 Microsoft Office 應用程式 UI 的詳細資訊,請參閱 Office UI 自訂

請參閱

概念

使用 ServerDocument 類別管理伺服器上的文件

在文件層級自訂中取得原生 Office 物件的擴充物件

撰寫 Office 方案中的程式碼

其他資源

Office 文件上的控制項

合併 VBA 和文件層級自訂