Llamar a código en complementos de nivel de aplicación desde otras soluciones de Office
Actualización: noviembre 2007
Se aplica a |
---|
La información de este tema sólo se aplica a los proyectos de Visual Studio Tools para Office y versiones de Microsoft Office especificados. Tipo de proyecto
Versión de Microsoft Office
Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto. |
Puede exponer objetos del complemento a otras soluciones de Microsoft Office. Esto resulta útil si el complemento proporciona un servicio que desea habilitar para que lo usen otras soluciones de Office. Por ejemplo, si tiene un complemento para Microsoft Office Excel que realiza cálculos en datos financieros de un servicio web, otras soluciones de Office pueden realizar estos cálculos mediante una llamada en tiempo de ejecución al complemento de Excel.
Visual Studio Tools para Office también proporciona una característica similar para las personalizaciones de nivel de documento. Si va a desarrollar una personalización para 2007 Microsoft Office system, puede llamar al código de la personalización desde código de VBA en el documento. Para obtener más información, consulte Llamar a código de VBA en personalizaciones de nivel de documento.
Soluciones de Office que pueden llamar a código de un complemento
Puede exponer un objeto de un complemento a los tipos siguientes de soluciones de Office:
Otros complementos de Visual Studio Tools para Office.
Personalizaciones de nivel de documento que se cargan en el mismo proceso de aplicación que el complemento.
Complementos COM (es decir, complementos que implementan directamente la interfaz IDTExtensibility2).
Código de Visual Basic para Aplicaciones (VBA) en un documento que se carga en el mismo proceso de la aplicación que el complemento.
Exponer objetos a otras soluciones de Office
Para exponer un objeto a otros complementos, invalide el método RequestComAddInAutomationService de la clase ThisAddIn. Devuelva el objeto que desea exponer a otras soluciones de Office.
Cuando se carga el complemento, el motor en tiempo de ejecución de Visual Studio Tools para Office llama al método RequestComAddInAutomationService. El motor en tiempo de ejecución asigna el objeto devuelto a la propiedad Object de un objeto COMAddIn que representa el complemento. Este objeto COMAddIn está disponible para otras soluciones de Office.
Requisitos del objeto devuelto
La implementación de RequestComAddInAutomationService debe devolver una instancia de una clase que cumple los requisitos siguientes:
La clase debe ser pública y tener el atributo ComVisibleAttribute establecido en true.
La clase debe exponer la interfaz IDispatch. Existen dos maneras en las que una clase puede hacer esto:
La clase puede implementar una interfaz que tiene ComVisibleAttribute establecido en true y InterfaceTypeAttribute establecido en InterfaceIsIDispatch o InterfaceIsDual.
O bien,
La clase puede tener ClassInterfaceAttribute establecido en AutoDual o AutoDispatch.
Si el objeto que devuelve no cumple estos requisitos, el motor en tiempo de ejecución de Visual Studio Tools para Office producirá una InvalidCastException después de llamar a la implementación.
Para consultar un ejemplo de una clase que cumple estos requisitos, vea Tutorial: Llamar a código de VBA en un complemento de nivel de aplicación.
Código de
En el siguiente ejemplo de código se muestra cómo invalidar RequestComAddInAutomationService. Este ejemplo supone que ha definido una clase denominada AddInUtilities que desea exponer a otras soluciones de Office y que la clase AddInUtilities cumple los requisitos especificados anteriormente. Para consultar este código en el contexto de un tutorial mayor, vea Tutorial: Llamar a código de VBA en un complemento de nivel de aplicación.
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;
}
Obtener acceso a objetos desde otras soluciones de Office
En el código de una solución de Office diferente (no el complemento expuesto), realice los pasos siguientes:
Obtenga el objeto COMAddIn que representa el complemento expuesto. Puede obtener acceso a todos los complementos disponibles mediante la propiedad COMAddIns de la clase Application.
En el siguiente ejemplo de código se muestra cómo usar VBA para llamar a un método de un complemento. Esta macro de VBA llama a un método denominado ImportData que se define en un complemento con el nombre ExcelImportData. Para consultar este código en el contexto de un tutorial mayor, vea Tutorial: Llamar a código de VBA en un complemento de nivel de aplicación.
Sub CallVSTOMethod()
Dim addIn As COMAddIn
Dim automationbject As Object
Set addIn = Application.COMAddIns("ExcelImportData")
Set automationObject = addIn.Object
automationObject.ImportData
End Sub
Vea también
Tareas
Tutorial: Llamar a código de VBA en un complemento de nivel de aplicación
Cómo: Crear proyectos de Visual Studio para Office
Conceptos
Programar complementos de nivel de aplicación
Desarrollar soluciones de Office
Personalizar características de la interfaz de usuario mediante interfaces de extensibilidad