Tutorial: Llamada al código desde VBA en un proyecto de Visual Basic

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. 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.

Se aplica a: la información de este tema se aplica a proyectos de nivel de documento para Excel y Word. Para obtener más información, consulte Características disponibles por aplicación de Office lication y tipo de proyecto.

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.

En este tutorial se muestran las tareas siguientes:

  • Crear un documento que contenga código VBA.

  • Confiar en la ubicación del documento usando el Centro de confianza de Word.

  • Agregar un método a la clase de elemento host ThisDocument .

  • Exponer el método a código VBA.

  • Llamar al método 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 más información, vea Personalizar el IDE de Visual Studio.

Requisitos previos

Necesitará los componentes siguientes para completar este tutorial:

Creación de un documento que contenga código VBA

El primer paso consiste en crear un documento habilitado para macros que contenga una macro VBA sencilla. El documento debe contener un proyecto de VBA antes de que se cree un proyecto de Visual Studio basado en el documento. 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.

Si ya tiene un documento que contiene código VBA y desea usarlo, puede omitir este paso.

Para crear un documento que contenga código VBA

  1. Inicie Word.

  2. Guarde el documento activo como documento habilitado para macros de Word (*.docm) con el nombre DocumentWithVBA. Guárdelo en una ubicación conveniente, como el escritorio.

  3. 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.

  4. En el grupo Código , haga clic en Visual Basic.

    Se abrirá el Editor de Visual Basic.

  5. En la ventana Proyecto , haga doble clic en ThisDocument.

    Se abrirá el archivo de código para el objeto ThisDocument .

  6. Agregue el código VBA siguiente al archivo de código. Este código define una función simple que no hace nada. El único propósito de esta función es asegurarse de que existe un proyecto de VBA en el documento. Esto es necesario para los pasos posteriores de este tutorial.

    Sub EmptySub()
    End Sub
    
  7. Guarde el documento y salga de Word.

Creación del proyecto

Ahora puede crear un proyecto de nivel de documento para Word que use el documento habilitado para macros creado anteriormente.

Para crear un nuevo proyecto

  1. Inicie Visual Studio.

  2. En el menú Archivo , elija Nuevoy haga clic en Proyecto. Si su IDE está configurado para usar la configuración de desarrollo de Visual Basic, en el menú Archivo haga clic en Nuevo proyecto.

  3. En el panel de plantillas, expanda Visual Basicy luego expanda Office/SharePoint.

  4. Seleccione el nodo Complementos de Office .

  5. En la lista de plantillas de proyecto, seleccione el proyecto Documento de Word 2010 o Documento de Word 2013 .

  6. En el cuadro Nombre , escriba CallingCodeFromVBA.

  7. Haga clic en OK.

    Se abre el Asistente para proyectos de Visual Studio Tools para Office .

  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. Si usa su propio documento habilitado para macros, especifique la ubicación de dicho documento.

  9. Haga clic en Finalizar

    Visual Studio abre el documento DocumentWithVBA en el diseñador y agrega el proyecto CallingCodeFromVBA a Explorador de soluciones.

Confiar en la ubicación del documento

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. Hay varias maneras de hacerlo. En este tutorial, confíe en la ubicación del documento en el Centro de confianza de Word.

Para confiar en la ubicación del documento

  1. Inicie Word.

  2. Haga clic en la pestaña Archivo .

  3. Haga clic en el botón Opciones de Word .

  4. En el panel de categorías, haga clic en Centro de confianza.

  5. En el panel de detalles, haga clic en Configuración del Centro de confianza.

  6. En el panel de categorías, haga clic en Ubicaciones de confianza.

  7. En el panel de detalles, haga clic en Agregar nueva ubicación.

  8. En el cuadro de diálogo Ubicación de confianza de Microsoft Office , busque la carpeta que contiene el proyecto CallingCodeFromVBA .

  9. Seleccione Las subcarpetas de esta ubicación también son de confianza.

  10. En el cuadro de diálogo Ubicación de confianza de Microsoft Office , haga clic en Aceptar.

  11. En el cuadro de diálogo Centro de confianza , haga clic en Aceptar.

  12. En el cuadro de diálogo Opciones de Word , haga clic en Aceptar.

  13. Salga de Word.

Agregar un método a la clase ThisDocument

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.

Para agregar un método a la clase ThisDocument

  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.

    Se abre el archivo ThisDocument.vb en el Editor de código.

  2. Agrega el método siguiente a la clase ThisDocument: Este método crea una tabla con dos filas y dos columnas al principio del documento. Los parámetros especifican el texto que se muestra en la primera fila. Más adelante en este tutorial, llamará a este método desde el código de VBA del documento.

    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.

Exposición del método al código VBA

Para exponer el método CreateTable a código VBA del documento, establezca la propiedad EnableVbaCallers para el elemento host ThisDocument en True.

Para exponer el método a código VBA

  1. En el Explorador de soluciones, haga doble clic en ThisDocument.vb.

    El archivo DocumentWithVBA se abre en el diseñador.

  2. En la ventana Propiedades , seleccione la propiedad EnableVbaCallers y cambie el valor a True.

  3. Haga clic en Aceptar en el mensaje que se muestra.

  4. Compile el proyecto.

Llamada al método desde código VBA

Ahora puede llamar al método CreateTable desde el código VBA del documento.

Nota:

En este tutorial, agregará código VBA al documento mientras se depura el proyecto. 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. Si desea guardar el código VBA, puede copiarlo en el documento de la carpeta del proyecto. Para obtener más información, consulte Combinar VBA y personalizaciones de nivel de documento.

Para llamar al método desde código VBA

  1. Presione F5 para ejecutar el proyecto.

  2. En la pestaña Desarrollador , en el grupo Código , haga clic en Visual Basic.

    Se abrirá el Editor de Visual Basic.

  3. En el menú Insertar , haga clic en Módulo.

  4. Agregue el siguiente código al nuevo módulo.

    Este código llama al método CreateTable en el ensamblado de personalización. La macro accede a este método mediante la propiedad CallVSTOAssembly del objeto ThisDocument . Esta propiedad se generó automáticamente al establecer la propiedad EnableVbaCallers anteriormente en este tutorial.

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

  6. Compruebe que se agregó una tabla nueva al documento.

  7. Salga de Word sin guardar los cambios.

Pasos siguientes

Puede obtener más información sobre cómo llamar a código en soluciones de Office desde VBA en estos temas: