Tutorial: Llamada al código en un complemento de VSTO desde VBA
Este tutorial muestra cómo exponer un objeto de un complemento de VSTO a otras soluciones de Microsoft Office, incluido Visual Basic para aplicaciones (VBA) y complementos VSTO de COM.
Se aplica a: La información de este tema se aplica a los proyectos de complemento de VSTO. Para obtener más información, consulte Características disponibles por aplicación de Office lication y tipo de proyecto.
Aunque este tutorial usa concretamente Excel, los conceptos que se muestran en él se pueden aplicar a cualquier plantilla de proyecto de complementos de VSTO proporcionada por Visual Studio.
En este tutorial se muestran las tareas siguientes:
Definir una clase que se puede exponer a otras soluciones de Office.
Exponer la clase a otras soluciones de Office.
Llamar a un método de la clase desde código VBA.
Nota:
Es posible que tu equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Personalizar el IDE.
Requisitos previos
Necesitará los componentes siguientes para completar este tutorial:
Una edición de Visual Studio que incluye las herramientas para desarrolladores de Microsoft Office. Para obtener más información, vea Configurar un equipo para desarrollar soluciones de Office.
Microsoft Excel
Creación del proyecto de complemento de VSTO
El primer paso es crear un proyecto de complemento de VSTO para Excel.
Para crear un nuevo proyecto
Cree un proyecto de complemento de VSTO para Excel con el nombre ExcelImportDatamediante la plantilla de proyecto de complementos de VSTO para Excel. Para obtener más información, consulta How to: Create Office Projects in Visual Studio.
Visual Studio abre el archivo de código ThisAddIn.cs o ThisAddIn.vb y agrega el proyecto ExcelImportData a Explorador de soluciones.
Definir una clase que pueda exponer a otras soluciones de Office
El propósito de este tutorial es llamar a al método ImportData
de una clase denominada AddInUtilities
en el complemento de VSTO desde código de VBA. Este método escribe una cadena en la celda A1 de la hoja de cálculo activa.
Para exponer la clase AddInUtilities
a otras soluciones de Office, debe hacer que la clase sea pública y visible para COM. También debe exponer la interfaz IDispatch de la clase. El código del procedimiento siguiente muestra una manera de cumplir estos requisitos. Para obtener más información, consulta Calling Code in VSTO Add-ins from Other Office Solutions.
Para definir una clase que pueda exponer a otras soluciones de Office
En el menú Proyecto , haga clic en Agregar clase.
En el cuadro de diálogo Agregar nuevo elemento , cambie el nombre de la nueva clase a AddInUtilitiesy haga clic en Agregar.
El archivo AddInUtilities.cs o AddInUtilities.vb se abre en el Editor de código.
Agregue las siguientes directivas al principio del archivo.
Reemplace la clase
AddInUtilities
por el siguiente código.[ComVisible(true)] public interface IAddInUtilities { void ImportData(); } [ComVisible(true)] [ClassInterface(ClassInterfaceType.None)] public class AddInUtilities : IAddInUtilities { // This method tries to write a string to cell A1 in the active worksheet. public void ImportData() { Excel.Worksheet activeWorksheet = Globals.ThisAddIn.Application.ActiveSheet as Excel.Worksheet; if (activeWorksheet != null) { Excel.Range range1 = activeWorksheet.get_Range("A1", System.Type.Missing); range1.Value2 = "This is my data"; } } }
Este código hace que la clase
AddInUtilities
sea visible para COM y agrega el métodoImportData
a la clase. Para exponer la interfaz IDispatch , la claseAddInUtilities
también tiene el atributo ClassInterfaceAttribute e implementa una interfaz que es visible para COM.
Exponer la clase a otras soluciones de Office
Para exponer la clase AddInUtilities
a otras soluciones de Office, invalide el método RequestComAddInAutomationService en la clase ThisAddIn
. Al invalidarlo, devuelva una instancia de la clase AddInUtilities
.
Para exponer la clase AddInUtilities a otras soluciones de Office
En el Explorador de soluciones, expanda Excel.
Haga clic con el botón secundario en el archivo ThisAddin.cs o ThisAddin.vby, a continuación, haga clic en Ver código.
Agregue el siguiente código a la clase
ThisAddIn
.En el menú Compilar , haga clic en Compilar solución.
Compruebe que la solución se compila sin errores.
Prueba del complemento VSTO
Puede llamar a la clase AddInUtilities
desde varios tipos distintos de soluciones de Office. En este tutorial, usará el código VBA en un libro de Excel. Para obtener más información sobre los otros tipos de soluciones de Office que también puede usar, vea Llamar al código en complementos de VSTO desde otras soluciones de Office.
Para probar el complemento de VSTO
Presione F5 para ejecutar el proyecto.
En Excel, guarde el libro activo como un libro de Excel habilitado para macros (*.xlsm). Guárdelo en una ubicación conveniente, como el escritorio.
En la cinta de opciones, haga clic en la pestaña Desarrollador .
Nota:
Si la pestaña Desarrollador no está visible, primero debe mostrarla. Para obtener más información, vea Cómo: Mostrar la pestaña programador en la cinta de opciones.
En el grupo Código , haga clic en Visual Basic.
Se abrirá el Editor de Visual Basic.
En la ventana Proyecto , haga doble clic en ThisWorkbook.
Se abrirá el archivo de código para el objeto
ThisWorkbook
.Agregue el código VBA siguiente al archivo de código. Este código obtiene primero un objeto COMAddIn que representa el complemento VSTO de ExcelImportData . A continuación, el código usa la propiedad Object del objeto COMAddIn para llamar al
ImportData
método .Sub CallVSTOMethod() Dim addIn As COMAddIn Dim automationObject As Object Set addIn = Application.COMAddIns("ExcelImportData") Set automationObject = addIn.Object automationObject.ImportData End Sub
Presione F5.
Compruebe que se ha agregado al libro la hoja nueva Datos importados . Compruebe también que la celda A1 contiene la cadena This is my data.
Salga de Excel.
Pasos siguientes
Puede obtener más información acerca de la programación de complementos de VSTO en estos temas:
Utilice la clase
ThisAddIn
para automatizar la aplicación host y realizar otras tareas en proyectos de complementos de VSTO. Para obtener más información, consulte Complementos de VSTO de programa.Crear un panel de tareas personalizado en un complemento de VSTO. Para obtener más información, vea Paneles de tareas personalizados y Cómo: Agregar un panel de tareas personalizado a una aplicación.
Personalice la cinta de opciones en un complemento de VSTO. Para obtener más información, vea Información general de la cinta de opciones y Cómo: Introducción a la personalización de la cinta de opciones.
Contenido relacionado
- Programas de complementos VSTO
- Llamar al código en complementos de VSTO desde otras soluciones de Office
- Desarrollo de soluciones de Office
- Cómo: Crear proyectos de Office en Visual Studio
- Architecture of VSTO Add-ins
- Personalización de las características de la interfaz de usuario mediante interfaces de extensibilidad