应用程序级外接程序编程

在通过创建应用程序级外接程序扩展 Microsoft Office 应用程序时,将直接依据项目中的 ThisAddIn 类编写代码。 可以使用此类执行诸如下列任务:访问 Microsoft Office 宿主应用程序的对象模型、自定义应用程序的用户界面 (UI) 以及向其他 Office 解决方案公开外接程序中的对象。

**适用于:**本主题中的信息适用于 Microsoft Office 2010 和 2007 Microsoft Office system 的应用程序级项目。有关更多信息,请参见按 Office 应用程序和项目类型提供的功能

与 Visual Studio 中其他类型的项目相比,在外接程序项目中编写代码有一些不同之处。 其中的许多不同是由向托管代码公开 Office 对象模型的方式引起的。 有关更多信息,请参见在 Office 解决方案中编写代码

有关应用程序级外接程序和可使用 Visual Studio 中的 Office 开发工具创建的其他类型的解决方案的常规信息,请参见 Office 解决方案开发概述

使用 ThisAddIn 类

您可以在 ThisAddIn 类中开始编写外接程序代码。 Visual Studio 将自动在外接程序项目中的 ThisAddIn.vb(Visual Basic 中)或 ThisAddIn.cs(C# 中)代码文件中生成此类。 当 Microsoft Office 应用程序加载外接程序时,Visual Studio Tools for Office Runtime会自动为您实例化此类。

ThisAddIn 类中有两个默认事件处理程序。 若要在加载外接程序时运行代码,请将代码添加到 ThisAddIn_Startup 事件处理程序中。 若要在即将卸载外接程序前运行代码,请将代码添加到 ThisAddIn_Shutdown 事件处理程序中。 有关这些事件处理程序的更多信息,请参见 Office 项目中的事件

提示

在 Outlook 2010 中,默认情况下,在卸载外接程序时并不总是调用 ThisAddIn_Shutdown 事件处理程序。 有关更多信息,请参见 Office 项目中的事件

访问宿主应用程序的对象模型

若要访问宿主应用程序的对象模型,请使用 ThisAddIn 类的 Application 字段。 此字段返回表示宿主应用程序当前实例的对象。 下表列出了每个外接程序项目中 Application 字段的返回值的类型。

宿主应用程序

返回值类型

Microsoft Office Excel

Microsoft.Office.Interop.Excel.Application

Microsoft Office InfoPath

Microsoft.Office.Interop.InfoPath.Application

Microsoft Office Outlook

Microsoft.Office.Interop.Outlook.Application

Microsoft Office PowerPoint

Microsoft.Office.Interop.PowerPoint.Application

Microsoft Office Project

Microsoft.Office.Interop.MSProject.Application

Microsoft Office Visio

Microsoft.Office.Interop.Visio.Application

Microsoft Office Word

Microsoft.Office.Interop.Word.Application

下面的代码示例演示如何使用 Application 字段在 Microsoft Office Excel 外接程序中创建新工作簿。 将从 ThisAddIn 类中运行此示例。

Dim newWorkbook As Excel.Workbook = Me.Application.Workbooks.Add()
Excel.Workbook newWorkbook = this.Application.Workbooks.Add(System.Type.Missing);

若要从 ThisAddIn 类以外执行相同的操作,请使用 Globals 对象访问 ThisAddIn 类。 有关 Globals 对象的更多信息,请参见对 Office 项目中对象的全局访问

Dim newWorkbook As Excel.Workbook = Globals.ThisAddIn.Application.Workbooks.Add()
Excel.Workbook newWorkbook = Globals.ThisAddIn.Application.Workbooks.Add(System.Type.Missing);

有关特定 Microsoft Office 应用程序的对象模型的更多信息,请参见以下主题:

用于执行其他任务的 ThisAddIn 成员

下表介绍了其他常见的任务,并显示了可以使用 ThisAddIn 类的哪些成员来执行这些任务。

任务

使用的成员

在加载外接程序时运行代码以初始化外接程序。

向 ThisAddIn_Startup 方法中添加代码。 这是 Startup 事件的默认事件处理程序。 有关更多信息,请参见 Office 项目中的事件

在卸载外接程序之前运行代码以清理外接程序使用的资源。

向 ThisAddIn_Shutdown 方法中添加代码。 这是 Shutdown 事件的默认事件处理程序。 有关更多信息,请参见 Office 项目中的事件

注意注意
在 Outlook 2010 中,默认情况下,在卸载外接程序时并不总是调用 ThisAddIn_Startup 事件处理程序。有关更多信息,请参见Office 项目中的事件

显示自定义任务窗格。

使用 CustomTaskPanes 字段。 有关更多信息,请参见自定义任务窗格概述

创建在任何打开的 Word 文档或 Excel 工作簿中都能识别的智能标记。

注意注意
在 Excel 2010 和 Word 2010 中已弃用智能标记。有关更多信息,请参见智能标记概述

在 Excel 或 Word 的外接程序中使用 VstoSmartTags 字段。 有关更多信息,请参见智能标记概述

向其他 Microsoft Office 解决方案公开您的外接程序中的对象。

重写 RequestComAddInAutomationService 方法。 有关更多信息,请参见从其他 Office 解决方案调用应用程序级外接程序中的代码

通过实现扩展性接口来自定义 Microsoft Office System 中的功能。

重写 RequestService 方法,以返回实现该接口的类的实例。 有关更多信息,请参见 使用扩展性接口自定义 UI 功能

注意注意
若要自定义功能区 UI,您还可以重写 CreateRibbonExtensibilityObject 方法。

了解 ThisAddIn 类的设计

在针对 .NET Framework 3.5 的项目中,ThisAddIn 类派生自 Visual Studio Tools for Office Runtime中的 Microsoft.Office.Tools.AddIn 类。

在针对 .NET Framework 4 的项目中,Microsoft.Office.Tools.AddIn 是一个接口,因此生成的 ThisAddIn 类无法从中派生任何实现。 相反,ThisAddIn 类派生自 Microsoft.Office.Tools.AddInBase 类。 该基类将对其成员的所有调用重定向到 Visual Studio Tools for Office Runtime中 Microsoft.Office.Tools.AddIn 接口的内部实现。 有关 Visual Studio Tools for Office Runtime 中,以 .NET Framework 3.5 和以 .NET Framework 4 为目标的项目有何区别的更多信息,请参见 Visual Studio Tools for Office Runtime 概述

在 Outlook 的外接程序项目中,ThisAddIn 类派生自针对 .NET Framework 3.5 的项目中的 Microsoft.Office.Tools.Outlook.OutlookAddIn 类和针对 .NET Framework 4 的项目中的 Microsoft.Office.Tools.Outlook.OutlookAddInBase。 这些基类提供了一些附加功能以支持窗体区域。 有关窗体区域的更多信息,请参见创建 Outlook 窗体区域

自定义 Microsoft Office 应用程序的用户界面

您可以使用应用程序级外接程序通过编程方式自定义 Microsoft Office 应用程序的 UI。 例如,您可以自定义功能区、显示自定义任务窗格或在 Outlook 中创建自定义窗体区域。 有关更多信息,请参见 Office UI 自定义

Visual Studio 提供了一些设计器和类,您可以使用它们来创建自定义任务窗格、功能区自定义项以及 Outlook 窗体区域。 这些设计器和类可帮助简化自定义这些功能的过程。 有关更多信息,请参见自定义任务窗格概述功能区设计器创建 Outlook 窗体区域

如果要采用类和设计器不支持的方式自定义其中的某个功能,您也可以通过在外接程序中实现“扩展性接口”来自定义这些功能。 有关更多信息,请参见使用扩展性接口自定义 UI 功能

还可以修改 Word 文档和 Excel 工作簿的 UI,方法是生成扩展文档和工作簿行为的宿主项。 这样您就可以向文档和工作表中添加托管控件和智能标记。 有关更多信息,请参见在运行时在应用程序级外接程序中扩展 Word 文档和 Excel 工作簿

从其他解决方案调用应用程序级外接程序中的代码

您可以向其他解决方案(包括其他 Office 解决方案)公开外接程序中的对象。 如果外接程序提供了您希望使其他解决方案能够使用的服务,这一点非常有用。 例如,如果某个 Microsoft Office Excel 外接程序从 Web 服务中执行财务数据计算,则其他解决方案可以通过在运行时调入该 Excel 外接程序来执行这些计算。

有关更多信息,请参见 从其他 Office 解决方案调用应用程序级外接程序中的代码

请参见

任务

演练:从 VBA 中调用应用程序级外接程序中的代码

如何:在 Visual Studio 中创建 Office 项目

概念

在运行时在应用程序级外接程序中扩展 Word 文档和 Excel 工作簿

从其他 Office 解决方案调用应用程序级外接程序中的代码

使用扩展性接口自定义 UI 功能

应用程序级外接程序的体系结构

在 Office 解决方案中编写代码

其他资源

开发 Office 解决方案