文件層級自訂的架構

更新: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 Studio Tools for Office 自訂的下列各方面:

  • 了解自訂

  • 自訂的元件

  • 自訂如何與 2007 Microsoft Office system 一起運作

  • 自訂如何與 Microsoft Office 2003 一起運作

如需使用 Visual Studio Tools for Office 自訂的一般資訊,請參閱 Office 方案開發概觀Word 文件層級自訂的程式設計入門Excel 文件層級自訂的程式設計入門

了解自訂

當您使用 Visual Studio Tools for Office 建置 (Build) 自訂時,會建立與特定文件關聯的 Managed 程式碼組件 (Assembly)。文件或活頁簿中若是有連結的組件就稱為具有 Managed 程式碼擴充。如需詳細資訊,請參閱Office 方案中的組件概觀

當使用者開啟文件時,Microsoft Office 應用程式會載入組件。載入組件之後,自訂就能回應文件開啟時的事件。自訂還可以呼叫物件模型 (Object Model) 在文件開啟時自動化並擴充應用程式,而且它可以使用 .NET Framework 中的任何類別 (Class)。

組件會透過應用程式的主要 Interop 組件與應用程式的 COM 元件進行通訊。如需詳細資訊,請參閱 Office 主要 Interop 組件Office 方案開發概觀

Visual Studio Tools for Office 會在不同的應用程式定義域中載入每個組件。這意味著如果某個方案運作失常,並不會導致其他方案失敗。此外,還可確保關閉文件後,所有程式碼也會關閉,而且會從記憶體中卸載組件。文件層級自訂是設計與單一應用程式定義域中的單一文件一起運作。不是設計供跨文件通訊之用。如需應用程式定義域的詳細資訊,請參閱應用程式定義域概觀

注意事項:

   您使用 Visual Studio Tools for Office 建立的文件層級自訂,是設計為只在使用者啟動應用程式時使用。如果是以程式設計的方式啟動應用程式 (例如,使用 Automation),則自訂可能無法如預期般運作。

設計階段和執行階段經驗

了解設計和執行方案的經驗,可以幫助您了解 Visual Studio Tools for Office 方案的架構。

設計階段

設計階段經驗包含下列步驟:

  1. 開發人員在 Visual Studio 中建立文件層級的專案。專案包括文件以及在文件背後執行的組件。文件可以是已經存在的文件 (或許是由其他設計人員建立的),也可以與專案一起建立新文件。

  2. 設計人員 (建立專案的開發人員,或是其他人員) 為使用者建立文件的最終外觀和感覺。

執行階段

執行階段經驗包含下列步驟:

  1. 使用者開啟具有 Managed 程式碼擴充的文件或活頁簿。

  2. 文件或活頁簿載入已編譯的組件。

  3. 組件在使用者處理文件或活頁簿時回應事件。

開發人員和使用者觀點比較

由於開發人員主要是在 Visual Studio 中進行開發,而使用者則是在 Word 或 Excel 中工作,所以有兩種方向可以了解文件層級自訂。

開發人員的觀點

使用者的觀點

開發人員可以使用 Visual Studio 撰寫 Word 和 Excel 能夠存取的程式碼。

雖然看起來開發人員好像是要建立會執行 Word 或 Excel 的可執行檔,但是處理序實際運作的方式卻正好相反。文件會與一個組件關聯,並且含有指向這個組件的指標。當文件開啟時,Word 或 Excel 會尋找這個組件並且執行程式碼來回應所有要處理的事件。

要使用這個方案的使用者只需要開啟文件或活頁簿 (或者從範本建立新文件),就像開啟任何其他 Microsoft Office 檔案一樣。

組件會提供文件或活頁簿中的自訂值,例如用目前的資料自動填入,或顯示對話方塊要求輸入資訊。

文件層級自訂所支援的文件格式

當您建立自訂專案時,可以選擇要在專案中使用的文件格式。如需詳細資訊,請參閱 HOW TO:建立 Visual Studio Tools for Office 專案

下表列出您可以在 Excel 的文件層級自訂中使用的文件格式。

Excel 2007

Excel 2003

Excel 活頁簿 (.xlsx)

Excel 啟用巨集的活頁簿 (.xlsm)

Excel 二進位活頁簿 (.xlsb)

Excel 97-2003 活頁簿 (.xls)

Excel 範本 (.xltx)

Excel 啟用巨集的範本 (.xltm)

Excel 97-2003 範本 (.xlt)

Excel 活頁簿 (.xls)

Excel 範本 (.xlt)

下表列出您可以在 Word 的文件層級自訂中使用的文件格式。

Word 2007

Word 2003

Word 文件 (.docx)

Word 啟用巨集的文件 (.docm)

Word 97-2003 文件 (.doc)

Word 範本 (.dotx)

Word 啟用巨集的範本 (.dotm)

Word 97-2003 範本 (.dot)

Word 文件 (.doc)

Word 範本 (.dot)

如果 2007 Microsoft Office 自訂是根據 Microsoft Office 2003 中建立的文件,Visual Studio Tools for Office 不會變更文件的檔案格式。

您只能以支援的格式為文件設計 Managed 程式碼擴充。否則,當文件在應用程式中開啟時,可能會無法引發特定事件。例如,對以 Excel XML 試算表格式或以網頁 (.htm、.html) 格式儲存的活頁簿使用 Managed 程式碼擴充時,就不會引發 Open 事件。

支援具有 .xml 副檔名的 Word 文件

Word 2003 和 Word 2007 的文件層級專案範本不允許您根據下列檔案格式建立專案:

  • Word XML 文件 (*xml)。

  • Word 2003 XML 文件 (*xml)。

如果您希望使用者使用這些檔案格式的自訂,請將自訂建置和部署為使用上表指定的其中一個支援的檔案格式。安裝自訂之後,使用者可以將文件儲存為 Word XML 文件 (*xml) 格式 (如果是 Word 2007) 或 Word 2003 XML 文件 (*xml) 格式 (如果是 Word 2003),自訂仍會如預期地繼續運作。

自訂的元件

自訂的主要成分是文件和組件。除了這些成分之外,還有其他數個項目在 Microsoft Office 應用程式探索和載入自訂的方式中扮演重要角色。

部署資訊清單和應用程式資訊清單

自訂會使用部署資訊清單和應用程式資訊清單來識別及載入最新版的自訂組件。部署資訊清單會指向目前的應用程式資訊清單。而應用程式資訊清單會指向自訂組件,並指定組件中要執行的進入點 (Entry Point) 類別。如需詳細資訊,請參閱 Office 方案中的應用程式和部署資訊清單

Visual Studio Tools for Office Runtime

若要執行使用 Visual Studio Tools for Office 建立的自訂,使用者電腦上必須已安裝 Visual Studio Tools for Office Runtime。Visual Studio Tools for Office Runtime 包含會載入自訂組件和一組 Managed 組件的 Unmanaged 元件。這些 Managed 組件則會提供自訂程式碼用於自動化和擴充主應用程式 (Host Application) 的物件模型。

如需詳細資訊,請參閱 Visual Studio Tools for Office Runtime 概觀

自訂如何與 2007 Microsoft Office System 一起運作

使用者開啟屬於 2007 Microsoft Office 自訂一部分的文件時,應用程式會使用與該文件連結的部署資訊清單來找出並載入最新版的自訂組件。部署資訊清單的位置儲存在名為 _AssemblyLocation 的自訂文件屬性中。建置方案時,識別這個位置的字串會插入至這個屬性。

部署資訊清單會指向應用程式資訊清單,而應用程式資訊清單則會指向最新的組件。如需詳細資訊,請參閱 Office 方案中的應用程式和部署資訊清單

下圖顯示 2007 Microsoft Office system 文件自訂的基本架構。

2007 Microsoft Office system 的自訂架構

2007 Microsoft Office System 中的自訂載入程序

下列步驟會在開啟屬於 2007 Microsoft Office 方案一部分的文件時發生:

  1. Microsoft Office 應用程式檢查自訂文件屬性,查看文件是否具有關聯的 Managed 程式碼擴充。如需詳細資訊,請參閱自訂文件屬性概觀

  2. 如果有 Managed 程式碼擴充,應用程式會載入 VSTOEE.dll,而這個檔案會載入 VSTOLoader.dll。這些都是 Unmanaged DLL,而且是 Microsoft Visual Studio Tools for the Microsoft Office system (Runtime 3.0 版) 的載入器元件。如需詳細資訊,請參閱 Visual Studio Tools for Office Runtime 概觀

  3. VSTOLoader.dll 會載入 .NET Framework 並啟動 Visual Studio Tools for Office Runtime 的 Managed 部分。

  4. 如果是從本機電腦以外的位置開啟文件,Visual Studio Tools for Office Runtime 會確認文件的位置是否在該特定 Office 應用程式之 [信任中心設定] 的 [信任位置] 清單中。如果文件的位置不是在信任的位置,就不會信任自訂,而載入程序在這裡停止。

  5. Visual Studio Tools for Office Runtime 會安裝方案 (如果還沒安裝)、下載最新的應用程式和部署資訊清單,並且執行一系列的安全性檢查。如需詳細資訊,請參閱 Office 方案中的安全性 (2007 系統)

  6. 如果自訂被信任而得以執行,則 Visual Studio Tools for Office Runtime 會使用部署資訊清單和應用程式資訊清單來檢查組件更新。如果有新版的組件可用,Runtime 就會將新版的組件下載至用戶端電腦上的 ClickOnce 快取。如需詳細資訊,請參閱部署 Office 方案 (2007 系統)

  7. Visual Studio Tools for Office Runtime 建立要載入自訂組件的新應用程式定義域。

  8. Visual Studio Tools for Office Runtime 將自訂組件載入至應用程式定義域中。

  9. Visual Studio Tools for Office Runtime 呼叫自訂組件中的 Startup 事件處理常式。如需詳細資訊,請參閱 Visual Studio Tools for Office 專案事件

自訂如何與 Microsoft Office 2003 一起運作

當使用者開啟屬於 Microsoft Office 2003 自訂一部分的文件時,應用程式會使用文件中內嵌的應用程式資訊清單以找出並載入最新版的自訂組件。內嵌應用程式資訊清單可以直接指向組件,或者指向用於找出組件更新的部署資訊清單。如需詳細資訊,請參閱 Office 方案中的應用程式和部署資訊清單

內嵌應用程式資訊清單包含在稱為 Runtime Storage Control 的隱藏內嵌控制項中。如需詳細資訊,請參閱 Runtime Storage Control 概觀

下圖顯示 Microsoft Office 2003 文件自訂的基本架構。

Microsoft Office 2003 的自訂架構

Microsoft Office 2003 中的自訂載入程序

下列步驟會在開啟屬於 2003 Microsoft Office 方案一部分的文件時發生:

  1. Microsoft Office 應用程式檢查自訂文件屬性,查看文件是否具有關聯的 Managed 程式碼擴充。如需詳細資訊,請參閱自訂文件屬性概觀

  2. 如果有 Managed 程式碼擴充,應用程式會載入 AddinLoader.dll。這是一個 Unmanaged DLL,而且是 Visual Studio 2005 Tools for Office Second Edition Runtime 的載入器元件。如需詳細資訊,請參閱 Visual Studio Tools for Office Runtime 概觀

  3. AddinLoader.dll 會載入 .NET Framework 並啟動 Visual Studio Tools for Office Runtime 的 Managed 部分。

  4. Visual Studio Tools for Office Runtime 會建立應用程式定義域、設定應用程式定義域不信任「我的電腦區域」的原則,以及檢查程式碼存取安全性原則存放區以尋找自訂組件的原則。

  5. .NET Framework 根據原則驗證組件所呈現的辨識項。如果失敗,就會引發錯誤。如果通過,就繼續進行處理序。

  6. 如果自訂使用部署資訊清單,則 Visual Studio Tools for Office Runtime 會使用它來檢查組件更新。如果必須進行任何更新,就會立即執行。

  7. Visual Studio Tools for Office Runtime 將組件載入至應用程式定義域中。

  8. Visual Studio Tools for Office Runtime 呼叫自訂組件中的 Startup 事件處理常式。如需詳細資訊,請參閱 Visual Studio Tools for Office 專案事件

請參閱

概念

應用程式層級增益集的架構

Visual Studio Tools for Office Runtime 概觀

在 Visual Studio 中建立 Office 方案

自訂文件屬性概觀

文件層級自訂中的資料模型

Runtime Storage Control 概觀

其他資源

Visual Studio Tools for Office 方案的架構

Office 方案中的安全性