共用方式為


在 Office 解決方案中撰寫程式碼

在 Office 專案中撰寫程式碼的某些方面與 Visual Studio 中的其他類型專案不同。 其中許多差異都與 Office 物件模型公開給 Managed 程式碼的方式有關。 其他差異與 Office 專案的設計有關。

適用於: 本主題中的資訊適用於文件層級專案和 VSTO 增益集專案。 請參閱 Office 應用程式和專案類型提供的功能

Managed 程式碼和 Office 應用程式開發

使創建集成 Microsoft Office 解決方案成為可能的關鍵技術是自動化,它是組件對象模型 (COM) 技術的一部分。 自動化可讓您使用程式碼來建立和控制任何應用程式、DLL 或 ActiveX 控制項所公開的軟體物件,這些物件支援適當的程式設計介面。

瞭解主要互操作元件

Microsoft Office 應用程式會將其大部分功能公開給自動化。 不過,您無法直接使用 Managed 程式碼 (例如 Visual Basic 或 C#) 來自動化 Office 應用程式。 若要使用受控程式碼將 Office 應用程式自動化,您必須使用 Office 主要互通元件 (PIA)。 主要互通元件可讓 Managed 程式碼與 Office 應用程式的 COM 型物件模型互動。

每個 Microsoft Office 應用程式都有一個 PIA。 當您在 Visual Studio 中建立 Office 專案時,適當 PIA 的參考會自動新增至專案。 若要將專案中其他 Office 應用程式的功能自動化,您必須手動新增適當 PIA 的參考。 如需詳細資訊,請參閱 如何:透過主要互通元件以 Office 應用程式為目標

在設計階段和執行階段使用主要互通元件

您必須在開發電腦的全域元件快取中安裝和註冊 Office PIA,才能執行大部分的開發工作。 如需詳細資訊,請參閱 設定電腦以開發 Office 解決方案

使用者電腦不需要 Office PIA 來執行以 .NET Framework 4 或更新版本為目標的 Office 解決方案。 如需詳細資訊,請參閱 設計和建立 Office 解決方案

在主要互通元件中使用類型

Office PIA 包含公開 Office 應用程式物件模型的類型組合,以及不打算直接在程式碼中使用的其他基礎結構類型。 如需 Office PIA 中類型的概觀,請參閱 Office 主要互通元件中的類別和介面概觀

由於 Office PIA 中的類型會對應至 COM 型物件模型中的類型,因此您使用這些類型的方式通常與其他 Managed 類型不同。 例如,您在 Office 主要互通元件中呼叫具有選擇性參數的方法的方式取決於您在專案中使用的程式設計語言。 如需詳細資訊,請參閱下列主題:

Office 專案的方案模型

所有 Office 專案都包含一或多個產生的類別,這些類別會為您的程式碼提供進入點。 這些類別也可讓您存取主機應用程式的物件模型,以及動作窗格和自訂工作窗格等功能的存取權。

瞭解產生的類別

在 Excel 和 Word 的文件層級專案中,產生的類別類似於應用程式物件模型中的頂層物件。 例如,Word 文件專案中產生 ThisDocument 的類別提供與 Word 物件模型中的類別相同的 Document 成員。 如需文件層級專案中產生類別的詳細資訊,請參閱 程式文件層級自訂。

VSTO 增益集專案提供一個名為 ThisAddIn 的產生類別。 這個類別與主機應用程式物件模型中的類別不同。 相反地,這個類別代表 VSTO 增益集本身,並提供成員,可用來存取主機應用程式的物件模型,以及存取 VSTO 增益集可用的其他功能。如需詳細資訊,請參閱 程式設計 VSTO 增益集

Office 專案中所有產生的類別都包含 StartupShutdown 事件處理常式。 若要開始撰寫程式碼,您通常會將程式碼新增至這些事件處理常式。 若要初始化 VSTO 增益集,您可以將程式碼 Startup 新增至事件處理常式。 若要清除 VSTO 增益集所使用的資源,您可以在事件處理常式中新增程式碼 Shutdown。 如需詳細資訊,請參閱 Office 專案中的事件

在執行階段存取產生的類別

載入 Office 解決方案時,Visual Studio Tools for Office 執行階段會具現化專案中每個產生的類別。 您可以使用類別, Globals 從專案中的任何程式碼存取這些物件。 例如,您可以使用 Globals 類別從 VSTO 附加元件中功能區按鈕的事件處理常式呼叫 ThisAddIn 類別的程式碼。

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

Microsoft Office 解決方案中的命名空間考量

建立專案之後,您無法變更 Office 專案的 預設命名空間 (或 Visual Basic 中的 根命名空間 )。 預設命名空間一律符合您在建立專案時指定的專案名稱。 如果您重新命名專案,預設命名空間不會變更。 如需專案中預設命名空間的詳細資訊,請參閱 應用程式頁面、專案設計工具 (C#) 和應用程式頁面、專案設計工具 (Visual Basic)。

變更 C# 專案中主專案類別的命名空間

主機專案類別 (例如 、 ThisAddIn或 類別ThisWorkbookThisDocument) 在 Visual C# Office 專案中具有自己的命名空間。 依預設,專案中主項目的命名空間會符合您在建立專案時指定的專案名稱。

若要變更 Visual C# Office 專案中主專案的命名空間,請使用 [ 主專案的命名空間 ] 屬性。 如需詳細資訊,請參閱 Office 專案中的屬性

Office 專案中支援的程式設計語言

Visual Studio 中的 Office 專案範本僅支援 Visual Basic 和 Visual C# 程式設計語言。 因此,這些專案範本只能在 Visual Studio 中 [新增專案] 對話方塊的 Visual BasicVisual C# 節點下使用。 如需詳細資訊,請參閱 如何:在 Visual Studio 中建立 Office 專案

語言選擇和 Office 程式設計

Microsoft Office 和 Visual Basic for Applications (VBA) 的開發是為了協同工作以優化應用程序自定義的工作流程。 Visual Basic 繼承了其中一些發展。 例如,Visual Basic 支援選擇性參數,這表示您在呼叫 Microsoft Office 主要互通元件中的某些方法時,比使用 Visual C# 時可以撰寫更少的程式碼。

在 Office 解決方案中使用 Visual Basic 與 Visual C# 進行程式設計

您可以使用 Visual Basic 或 Visual C# 來建立 Office 解決方案。 由於 Microsoft Office 物件模型設計為與 Microsoft Visual Basic for Applications (VBA) 搭配使用,因此 Visual Basic 開發人員可以輕鬆地使用 Microsoft Office 應用程式所公開的物件。 Visual C# 開發人員可以使用與 Visual Basic 開發人員相同的大部分功能,但在某些情況下,他們必須撰寫其他程式碼才能使用 Office 物件模型。 Office 開發中的基本程式設計功能與用 Visual Basic 和 C# 編寫的 Managed 程式碼之間也存在一些差異。

Visual Basic 和 Visual C 之間的主要差異#

下表顯示 Visual Basic 和 Visual C# 在 Office 開發中的主要差異。

特徵 / 功能 Description Visual Basic 支援 Visual C# 支援
選擇性參數 許多 Microsoft Office 方法都有當您呼叫方法時不需要的參數。 如果未傳遞參數值,則會使用預設值。 Visual Basic 支援選擇性參數。 Visual C# 在大部分情況下都支援選擇性參數。 如需詳細資訊,請參閱 Office 解決方案中的選擇性參數
透過參考傳遞參數 大部分 Microsoft Office 主要互通元件中的選擇性參數都可以依值傳遞。 不過,在某些主要互通元件中,接受參考類型的選擇性參數必須透過參考傳遞。

如需值和參考類型參數的詳細資訊,請參閱依值和參考傳遞引數 (Visual Basic) (適用於 Visual Basic) 和傳遞參數 (C# 程式設計指南)。
不需要額外的工作即可透過參照傳遞參數。 Visual Basic 編譯器會在必要時自動透過參考傳遞參數。 在大部分情況下,Visual C# 編譯器會在必要時自動透過參考傳遞參數。 如需詳細資訊,請參閱 Office 解決方案中的選擇性參數
參數化屬性 某些屬性接受參數,並充當唯讀函式。 Visual Basic 支援接受參數的屬性。 Visual C# 支援接受參數的屬性。
延遲綁定 延遲繫結牽涉到在執行階段判斷物件的屬性,而不是在設計階段將變數轉換至物件類型。 Visual Basic 會在 [嚴格選項] 關閉時執行延遲繫結。 當 [選項嚴格] 開啟時,您必須明確轉換物件,並使用命名空間中的 System.Reflection 類型來存取延遲繫結的成員。 如需詳細資訊,請參閱 Office 解決方案中的延遲繫結 Visual C# 會在以 .NET Framework 4 為目標的專案中執行後期繫結。 如需詳細資訊,請參閱 Office 解決方案中的延遲繫結

Office 開發與受控程式碼之間的主要差異

下表顯示 Office 開發與以 Visual Basic 或 Visual C# 撰寫的 Managed 程式碼之間的主要差異。

特徵 / 功能 Description Visual Basic 和 Visual C# 支援
陣列索引 Microsoft Office 應用程式中集合的陣列下限以 1 開頭。 Visual Basic 和 Visual C# 使用以 0 為基礎的陣列。 如需詳細資訊,請參閱 陣列 (C# 程式設計指南)Visual Basic 中的陣列 若要存取 Microsoft Office 應用程式物件模型中集合的第一個專案,請使用索引 1 而不是 0。