应用程序级外接程序编程
在通过创建应用程序级外接程序扩展 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 项目中的事件。 |
访问宿主应用程序的对象模型
若要访问宿主应用程序的对象模型,请使用 ThisAddIn 类的 Application 字段。此字段返回表示宿主应用程序当前实例的对象。下表列出了每个外接程序项目中 Application 字段的返回值的类型。
宿主应用程序 |
返回值类型 |
---|---|
Microsoft Office Excel |
|
Microsoft Office InfoPath |
|
Microsoft Office Outlook |
|
Microsoft Office PowerPoint |
|
Microsoft Office Project |
Microsoft.Office.Interop.MSProject.Application |
Microsoft Office Visio |
Microsoft.Office.Interop.Visio.Application |
Microsoft Office Word |
下面的代码示例演示如何使用 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 应用程序的对象模型的更多信息,请参见以下主题:
访问文档,在 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
用于执行其他任务的 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 方法。
|
了解 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 解决方案调用应用程序级外接程序中的代码。
请参见
任务
如何:在 Visual Studio 中创建 Office 项目
概念
在运行时在应用程序级外接程序中扩展 Word 文档和 Excel 工作簿
从其他 Office 解决方案调用应用程序级外接程序中的代码