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

更新:2007 年 11 月

适用对象

本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。

项目类型

  • 应用程序级项目

Microsoft Office 版本

  • 2007 Microsoft Office system

  • Microsoft Office 2003

有关更多信息,请参见按应用程序和项目类型提供的功能

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

Visual Studio Tools for Office 也为文档级自定义项提供了类似的功能。如果在开发 2007 Microsoft Office system 的自定义项,您可以从文档内的 VBA 代码中调用自定义项中的代码。有关更多信息,请参见从 VBA 中调用文档级自定义项中的代码

可调用外接程序中的代码的 Office 解决方案

可以向以下类型的 Office 解决方案公开外接程序中的对象:

  • 其他 Visual Studio Tools for Office 外接程序。

  • 在与外接程序相同的应用程序进程中加载的文档级自定义项。

  • COM 外接程序(即直接实现 IDTExtensibility2 接口的外接程序)。

  • 在与外接程序相同的应用程序进程中加载的文档中的 Visual Basic for Applications (VBA) 代码。

向其他 Office 解决方案公开对象

若要向其他外接程序公开对象,请重写 ThisAddIn 类中的 RequestComAddInAutomationService 方法。返回要向其他 Office 解决方案公开的对象。

外接程序加载后,Visual Studio Tools for Office 运行时将调用 RequestComAddInAutomationService 方法。运行时将返回的对象分配给表示外接程序的 COMAddIn 对象的 Object 属性。此 COMAddIn 对象可用于其他 Office 解决方案。

所返回对象的要求

RequestComAddInAutomationService 的实现必须返回满足下列要求的类的实例:

如果返回的对象不满足这些要求,Visual Studio Tools for Office 运行时将在调用您的实现后引发 InvalidCastException

若要了解满足这些要求的类的示例,请参见演练:从 VBA 中调用应用程序级外接程序中的代码

示例

下面的代码示例演示如何重写 RequestComAddInAutomationService。此示例假定您已定义了一个要向其他 Office 解决方案公开的名为 AddInUtilities 的类,并且该 AddInUtilities 类满足上面指定的要求。若要在更大的演练的上下文中查看此代码,请参见演练:从 VBA 中调用应用程序级外接程序中的代码

Private utilities As AddInUtilities

Protected Overrides Function RequestComAddInAutomationService() As Object
    If utilities Is Nothing Then
        utilities = New AddInUtilities()
    End If
    Return utilities
End Function
private AddInUtilities utilities;

protected override object RequestComAddInAutomationService()
{
    if (utilities == null)
        utilities = new AddInUtilities();

    return utilities;
}

从其他 Office 解决方案中访问对象

在其他 Office 解决方案(不是公开的外接程序)的代码中,执行下列步骤:

  1. 获取表示所公开外接程序的 COMAddIn 对象。可以使用 Application 类的 COMAddIns 属性来访问所有可用的外接程序。

  2. 访问 COMAddIn 对象的 Object 属性。

下面的代码示例演示如何使用 VBA 调用外接程序中的方法。此 VBA 宏将调用一个名为 ImportData 的方法,该方法是在名为 ExcelImportData 的外接程序中定义的。若要在更大的演练的上下文中查看此代码,请参见演练:从 VBA 中调用应用程序级外接程序中的代码

Sub CallVSTOMethod()
    Dim addIn As COMAddIn
    Dim automationbject As Object
    Set addIn = Application.COMAddIns("ExcelImportData")
    Set automationObject = addIn.Object
    automationObject.ImportData
End Sub

请参见

任务

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

如何:创建 Visual Studio Tools for Office 项目

概念

应用程序级外接程序编程

开发 Office 解决方案

AddIn 宿主项

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

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