Tutorial: Llamar a código desde VBA en un proyecto de Visual BasicWalkthrough: Call code from VBA in a Visual Basic project

Este tutorial muestra cómo llamar a un método en una personalización de nivel de documento para Microsoft Office Word desde el código de Visual Basic para Aplicaciones (VBA) del documento.This walkthrough demonstrates how to call a method in a document-level customization for Microsoft Office Word from Visual Basic for Applications (VBA) code in the document. El procedimiento implica tres pasos básicos: agregar un método a la clase de elemento host ThisDocument , exponer el método a código VBA y llamar al método desde código VBA del documento.The procedure involves three basic steps: add a method to the ThisDocument host item class, expose the method to VBA code, and then call the method from VBA code in the document.

Aplicación: la información de este tema se aplica a los proyectos de nivel de documento de Excel y Word.Applies to: The information in this topic applies to document-level projects for Excel and Word. Para obtener más información, consulte características disponibles por tipo de aplicación y el proyecto de Office.For more information, see Features available by Office application and project type.

Aunque en este tutorial se usa Word específicamente, los conceptos que se muestran en el tutorial también se aplican a los proyectos de nivel de documento para Excel.Although this walkthrough uses Word specifically, the concepts demonstrated by the walkthrough also apply to document-level projects for Excel.

En este tutorial se muestran las tareas siguientes:This walkthrough illustrates the following tasks:

  • Crear un documento que contenga código VBA.Creating a document that contains VBA code.

  • Confiar en la ubicación del documento usando el Centro de confianza de Word.Trusting the location of the document by using the Trust Center in Word.

  • Agregar un método a la clase de elemento host ThisDocument .Adding a method to the ThisDocument host item class.

  • Exponer el método a código VBA.Exposing the method to VBA code.

  • Llamar al método desde código VBA.Calling the method from VBA code.

Nota

Es posible que el equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos.The Visual Studio edition that you have and the settings that you use determine these elements. Para más información, vea Personalizar el IDE de Visual Studio.For more information, see Personalize the Visual Studio IDE.

Requisitos previosPrerequisites

Necesita los componentes siguientes para completar este tutorial:You need the following components to complete this walkthrough:

Crear un documento que contenga código VBACreate a document that contains VBA code

El primer paso consiste en crear un documento habilitado para macros que contenga una macro VBA sencilla.The first step is to create a macro-enabled document that contains a simple VBA macro. El documento debe contener un proyecto de VBA antes de que se cree un proyecto de Visual Studio basado en el documento.The document must contain a VBA project before you create a Visual Studio project that is based on that document. De lo contrario, Visual Studio no puede modificar el proyecto de VBA para que el código VBA pueda llamar al ensamblado de personalización.Otherwise, Visual Studio cannot modify the VBA project to enable VBA code to call into the customization assembly.

Si ya tiene un documento que contiene código VBA y desea usarlo, puede omitir este paso.If you already have a document that contains VBA code that you want to use, you can skip this step.

Para crear un documento que contenga código VBATo create a document that contains VBA code

  1. Inicie Word.Start Word.

  2. Guardar el documento activo como una palabra documento habilitado para macros (*.docm) con el nombre DocumentWithVBA.Save the active document as a Word Macro-Enabled Document (*.docm) with the name DocumentWithVBA. Guárdelo en una ubicación conveniente, como el escritorio.Save it in a convenient location, such as the desktop.

  3. En la cinta de opciones, haga clic en la pestaña Desarrollador .On the Ribbon, click the Developer tab.

    Nota

    Si la pestaña Desarrollador no está visible, primero debe mostrarla.If the Developer tab is not visible, you must first show it. Para obtener más información, consulte Cómo: mostrar la pestaña Programador en la cinta de opciones.For more information, see How to: Show the developer tab on the ribbon.

  4. En el grupo Código , haga clic en Visual Basic.In the Code group, click Visual Basic.

    Se abrirá el Editor de Visual Basic.The Visual Basic Editor opens.

  5. En la ventana Proyecto , haga doble clic en ThisDocument.In the Project window, double-click ThisDocument.

    Se abrirá el archivo de código para el objeto ThisDocument .The code file for the ThisDocument object opens.

  6. Agregue el código VBA siguiente al archivo de código.Add the following VBA code to the code file. Este código define una función simple que no hace nada.This code defines a simple function that does nothing. El único propósito de esta función es asegurarse de que existe un proyecto de VBA en el documento.The only purpose of this function is to ensure that a VBA project exists in the document. Esto es necesario para los pasos posteriores de este tutorial.This is required for later steps in this walkthrough.

    Sub EmptySub()  
    End Sub  
    
  7. Guarde el documento y salga de Word.Save the document and exit Word.

Crear el proyectoCreate the project

Ahora puede crear un proyecto de nivel de documento para Word que use el documento habilitado para macros creado anteriormente.Now you can create a document-level project for Word that uses the macro-enabled document you created earlier.

Para crear un nuevo proyectoTo create a new project

  1. Inicie Visual StudioVisual Studio.Start Visual StudioVisual Studio.

  2. En el menú Archivo , elija Nuevoy haga clic en Proyecto.On the File menu, point to New, and then click Project. Si su IDE está configurado para usar la configuración de desarrollo de Visual Basic, en el menú Archivo haga clic en Nuevo proyecto.If your IDE is set to use Visual Basic development settings, on the File menu, click New Project.

  3. En el panel de plantillas, expanda Visual Basicy luego expanda Office/SharePoint.In the templates pane, expand Visual Basic, and then expand Office/SharePoint.

  4. Seleccione el nodo Complementos de Office .Select the Office Add-ins node.

  5. En la lista de plantillas de proyecto, seleccione el proyecto Documento de Word 2010 o Documento de Word 2013 .In the list of project templates, select the Word 2010 Document or Word 2013 Document project.

  6. En el cuadro Nombre , escriba CallingCodeFromVBA.In the Name box, type CallingCodeFromVBA.

  7. Haga clic en Aceptar.Click OK.

    Se abre el Asistente para proyectos de Visual Studio Tools para Office .The Visual Studio Tools for Office Project Wizard opens.

  8. Seleccione Copiar un documento existentey, en el cuadro Ruta de acceso completa del documento existente , especifique la ubicación del documento DocumentWithVBA que creó anteriormente.Select Copy an existing document, and, in the Full path of the existing document box, specify the location of the DocumentWithVBA document that you created earlier. Si usa su propio documento habilitado para macros, especifique la ubicación de dicho documento.If you are using your own macro-enabled document, specify the location of this document instead.

  9. Haga clic en Finalizar.Click Finish.

    Visual StudioVisual Studio abre el documento DocumentWithVBA en el diseñador y agrega el proyecto CallingCodeFromVBA al Explorador de soluciones. opens the DocumentWithVBA document in the designer and adds the CallingCodeFromVBA project to Solution Explorer.

Confíe en la ubicación del documentoTrust the location of the document

Antes de exponer el código de la solución al código VBA del documento, debe confiar en el VBA del documento que se va a ejecutar.Before you can expose code in your solution to VBA code in the document, you must trust VBA in the document to run. Existen varias formas de hacerlo.There are several ways to do this. En este tutorial, confíe en la ubicación del documento en el Centro de confianza de Word.For this walkthrough, trust the location of the document in the Trust Center in Word.

Para confiar en la ubicación del documentoTo trust the location of the document

  1. Inicie Word.Start Word.

  2. Haga clic en la pestaña Archivo .Click the File tab.

  3. Haga clic en el botón Opciones de Word .Click the Word Options button.

  4. En el panel de categorías, haga clic en Centro de confianza.In the categories pane, click Trust Center.

  5. En el panel de detalles, haga clic en Configuración del Centro de confianza.In the details pane, click Trust Center Settings.

  6. En el panel de categorías, haga clic en Ubicaciones de confianza.In the categories pane, click Trusted Locations.

  7. En el panel de detalles, haga clic en Agregar nueva ubicación.In the details pane, click Add new location.

  8. En el cuadro de diálogo Ubicación de confianza de Microsoft Office , busque la carpeta que contiene el proyecto CallingCodeFromVBA .In the Microsoft Office Trusted Location dialog box, browse to the folder that contains the CallingCodeFromVBA project.

  9. Seleccione Las subcarpetas de esta ubicación también son de confianza.Select Subfolders of this location are also trusted.

  10. En el cuadro de diálogo Ubicación de confianza de Microsoft Office , haga clic en Aceptar.In the Microsoft Office Trusted Location dialog box, click OK.

  11. En el cuadro de diálogo Centro de confianza , haga clic en Aceptar.In the Trust Center dialog box, click OK.

  12. En el cuadro de diálogo Opciones de Word , haga clic en Aceptar.In the Word Options dialog box, click OK.

  13. Salga de Word.Exit Word.

Agregue un método a la clase ThisDocumentAdd a method to the ThisDocument class

Ahora que el proyecto de VBA está configurado, agregue un método a la clase de elemento host ThisDocument al que se pueda llamar desde código de VBA.Now that the VBA project is set up, add a method to the ThisDocument host item class that you can call from VBA code.

Para agregar un método a la clase ThisDocumentTo add a method to the ThisDocument class

  1. En el Explorador de soluciones, haga clic con el botón derecho en ThisDocument.vby, a continuación, haga clic en Ver código.In Solution Explorer, right-click ThisDocument.vb, and then click View Code.

    Se abre el archivo ThisDocument.vb en el Editor de código.The ThisDocument.vb file opens in the Code Editor.

  2. Agregue el método siguiente a la clase ThisDocument .Add the following method to the ThisDocument class. Este método crea una tabla con dos filas y dos columnas al principio del documento.This method creates a table with two rows and two columns at the beginning of the document. Los parámetros especifican el texto que se muestra en la primera fila.The parameters specify the text that is displayed in the first row. Más adelante en este tutorial, llamará a este método desde el código de VBA del documento.Later in this walkthrough, you will call this method from VBA code in the document.

    Public Sub CreateTable(ByVal firstColumnHeader As String, _
        ByVal secondColumnHeader As String)
    
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        Dim table1 As Word.Table = Me.Tables.Add(Me.Paragraphs(1).Range, 2, 2)
    
        With table1
            .Style = "Table Professional"
            .Cell(1, 1).Range.Text = firstColumnHeader
            .Cell(1, 2).Range.Text = secondColumnHeader
        End With
    End Sub
    
  3. Compile el proyecto.Build the project.

Exponer el método a código VBAExpose the method to VBA code

Para exponer el método CreateTable a código VBA del documento, establezca la propiedad EnableVbaCallers para el elemento host ThisDocument en True.To expose the CreateTable method to VBA code in the document, set the EnableVbaCallers property for the ThisDocument host item to True.

Para exponer el método a código VBATo expose the method to VBA code

  1. En el Explorador de soluciones, haga doble clic en ThisDocument.vb.In Solution Explorer, double-click ThisDocument.vb.

    El archivo DocumentWithVBA se abre en el diseñador.The DocumentWithVBA file opens in the designer.

  2. En la ventana Propiedades , seleccione la propiedad EnableVbaCallers y cambie el valor a True.In the Properties window, select the EnableVbaCallers property, and change the value to True.

  3. Haga clic en Aceptar en el mensaje que se muestra.Click OK in the message that is displayed.

  4. Compile el proyecto.Build the project.

Llame al método desde código VBACall the method from VBA code

Ahora puede llamar al método CreateTable desde el código VBA del documento.You can now call the CreateTable method from VBA code in the document.

Nota

En este tutorial, agregará código VBA al documento mientras se depura el proyecto.In this walkthrough, you will add VBA code to the document while debugging the project. El código VBA que agregue a este documento se sobrescribirá la siguiente vez que compile el proyecto, ya que Visual Studio reemplaza el documento de la carpeta de resultados de compilación por una copia del documento de la carpeta de proyecto principal.The VBA code you add to this document will be overwritten the next time that you build the project, because Visual Studio replaces the document in the build output folder with a copy of the document from the main project folder. Si desea guardar el código VBA, puede copiarlo en el documento de la carpeta del proyecto.If you want to save the VBA code, you can copy it into the document in the project folder. Para obtener más información, consulte combinar VBA y personalizaciones de nivel de documento.For more information, see Combine VBA and document-level customizations.

Para llamar al método desde código VBATo call the method from VBA code

  1. Presione F5 para ejecutar el proyecto.Press F5 to run your project.

  2. En la pestaña Desarrollador , en el grupo Código , haga clic en Visual Basic.On the Developer tab, in the Code group, click Visual Basic.

    Se abrirá el Editor de Visual Basic.The Visual Basic Editor opens.

  3. En el menú Insertar , haga clic en Módulo.On the Insert menu, click Module.

  4. Agregue el siguiente código al nuevo módulo.Add the following code to the new module.

    Este código llama al método CreateTable en el ensamblado de personalización.This code calls the CreateTable method in the customization assembly. La macro accede a este método mediante la propiedad CallVSTOAssembly del objeto ThisDocument .The macro accesses this method by using the CallVSTOAssembly property of the ThisDocument object. Esta propiedad se generó automáticamente al establecer la propiedad EnableVbaCallers anteriormente en este tutorial.This property was automatically generated when you set the EnableVbaCallers property earlier in this walkthrough.

    Sub CreateTable()  
        Call ThisDocument.CallVSTOAssembly.CreateTable("Employee Name", "Start Date")  
    End Sub  
    
  5. Presione F5.Press F5.

  6. Compruebe que se agregó una tabla nueva al documento.Verify that a new table was added to the document.

  7. Salga de Word sin guardar los cambios.Exit Word without saving your changes.

Pasos siguientesNext steps

Puede obtener más información sobre cómo llamar a código en soluciones de Office desde VBA en estos temas:You can learn more about calling code in Office solutions from VBA in these topics:

Vea tambiénSee also

Combinar VBA y personalizaciones de nivel de documento Combine VBA and document-level customizations
Programar personalizaciones de nivel de documento Program document-level customizations
Cómo: exponer código a VBA en un proyecto de Visual Basic How to: Expose code to VBA in a Visual Basic project
Cómo: exponer código a VBA en un Visual C# proyecto How to: Expose code to VBA in a Visual C# project
Tutorial: Llamar a código desde VBA en un Visual C# proyectoWalkthrough: Call code from VBA in a Visual C# project