应用程序级外接程序编程

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

**适用于:**本主题中的信息适用于 Microsoft Office 2013 和 Microsoft Office 2010 的应用程序级项目。有关更多信息,请参见按 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,在卸载外接程序时,ThisAddIn_Shutdown 不总是调用事件处理程序。有关更多信息,请参见Office 项目中的事件

Bb157876.collapse_all(zh-cn,VS.110).gif访问宿主应用程序的对象模型

若要访问宿主应用程序的对象模型,请使用 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 应用程序的对象模型的更多信息,请参见以下主题:

Bb157876.collapse_all(zh-cn,VS.110).gif访问文档,在 Office 应用程序启动

并非所有的 Office 2010 应用程序自动打开文档,则启动时,因此,Office 2013 应用程序没有打开的文档,则启动它们。因此,因此,如果代码需要一个文档处于打开状态,不要将 ThisAdd-In_Startup 事件处理程序的代码。相反,请将该代码添加到 Office 应用程序引发的事件,当用户创建或打开文档时。这样,您可以确保文档已在代码中,对此之前的操作。

只有当用户创建一个文档或打开现有文档时,下面的代码示例使用在 Word 文档一起使用。

Private Sub ThisAddIn_Startup() Handles Me.Startup

    AddHandler Application.NewDocument, AddressOf WorkWithDocument

End Sub

Private Sub WorkWithDocument(ByVal Doc As Microsoft.Office.Interop.Word.Document) _
    Handles Application.DocumentOpen

    Dim rng As Word.Range = Doc.Range(Start:=0, End:=0)
    rng.Text = " New Text "
    rng.Select()

End Sub

Bb157876.collapse_all(zh-cn,VS.110).gif用于执行其他任务的 ThisAddIn 成员

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

任务

使用的成员

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

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

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

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

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

显示自定义任务窗格。

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

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

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

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

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

说明说明
若要自定义功能区 UI,还可以重写 CreateRibbonExtensibilityObject 方法。

Bb157876.collapse_all(zh-cn,VS.110).gif了解 ThisAddIn 类的设计

在面向 .NET Framework 4的项目,Microsoft.Office.Tools.AddIn 是接口。ThisAddIn 类是从 Microsoft.Office.Tools.AddInBase 类派生的。该基类将对其成员的所有调用重定向到 Visual Studio Tools for Office Runtime中 Microsoft.Office.Tools.AddIn 接口的内部实现。

在 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 工作簿通过生成可扩展行为的宿主项文档和工作簿。这使您可以文档和工作表中添加托管控件。有关更多信息,请参见在运行时在应用程序级外接程序中扩展 Word 文档和 Excel 工作簿

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

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

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

请参见

任务

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

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

概念

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

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

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

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

在 Office 解决方案中编写代码

其他资源

开发 Office 解决方案