Tutorial: Llamar a código de VBA en un proyecto de Visual Basic

En este tutorial, se muestra cómo llamar a un método en una personalización de nivel de documento para Microsoft Office Word desde código de Visual Basic para Aplicaciones (VBA) incluido en el 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 de VBA y, a continuación, llamar al método desde código de VBA incluido en el documento.

Se aplica a: la información de este tema se aplica a los proyectos de nivel de documento para las siguientes aplicaciones: Excel 2007 y Excel 2010; Word 2007 y Word 2010. Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto de Office.

Aunque en este tutorial se usa específicamente Word, los conceptos que se describen son asimismo aplicables a los proyectos de nivel de documento para Excel.

En este tutorial se muestran las tareas siguientes:

  • Crear un documento que contenga código de VBA.

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

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

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

  • Llamar al método desde código de VBA.

Nota

Es posible que su 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 tenga y la configuración que esté usando determinan estos elementos. Para obtener más información, vea Trabajar con valores de configuración.

vínculo a vídeo Dispone de una demostración en vídeo relacionada en How Do I: Call VSTO Code from VBA?.

Requisitos previos

Necesita los componentes siguientes para completar este tutorial:

-

Una edición de Visual Studio 2010 que incluye las herramientas para desarrolladores de Microsoft Office. Para obtener más información, vea [Configurar un equipo para desarrollar soluciones de Office](bb398242\(v=vs.100\).md).
  • Word 2007 o Word 2010.

Crear un documento que contenga código de VBA

El primer paso consiste en crear un documento habilitado para macros que contenga una macro de VBA sencilla. Para crear un proyecto de Visual Studio basado en un documento, éste debe contener un proyecto de VBA. De lo contrario, Visual Studio no puede modificar el proyecto de VBA para que el código de VBA pueda llamar al ensamblado de personalización.

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

Para crear un documento que contenga código de VBA

  1. Inicie Word.

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

  3. En la cinta de opciones, haga clic en la ficha Desarrollador.

    Nota

    Si la ficha Desarrollador no está visible, debe mostrarla primero. Para obtener más información, consulte Cómo: Mostrar la pestaña Programador en la cinta de opciones.

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

    Se abre el Editor de Visual Basic.

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

    Se abre el archivo de código para el objeto ThisDocument.

  6. Agregue el siguiente código de VBA 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 se requiere para pasos posteriores de este tutorial.

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

Crear el proyecto

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

Para crear un nuevo proyecto

  1. Inicie Visual Studio.

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

  3. En el recuadro de plantillas, expanda Visual Basic y, a continuación, expanda Office.

  4. Seleccione el nodo 2010 o 2007.

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

  6. En el cuadro Nombre, escriba CallingCodeFromVBA.

  7. Haga clic en Aceptar.

    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 al 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 este documento.

  9. Haga clic en Finalizar.

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

Confiar en la ubicación del documento

Antes de exponer el código de la solución a código de VBA en el documento, debe confiar en VBA en el documento para ejecutarse. Existen varias formas de hacerlo. Para este tutorial, confíe en la ubicación del documento en el Centro de confianza en Word.

Para confiar en la ubicación del documento

  1. Inicie Word.

  2. Haga clic en la pestaña Archivo (para Word 2010) o el Botón de Microsoft Office (para Word 2007).

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

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

  5. En el panel Detalles, haga clic en Trust Center Settings.

  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, vaya a 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 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 secundario en ThisDocument.vb y, a continuación, en Ver código.

    El archivo ThisDocument.vb se abre en el editor de código.

  2. Agregue 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 código de VBA en el 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.

Exponer el método a código de VBA

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

Para exponer el método a código de 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 aparece.

  4. Compile el proyecto.

Llamar al método desde código de VBA

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

Nota

En este tutorial, agregará código de VBA al documento a la vez que depura el proyecto. El código de VBA que agregue a este documento se sobrescribirá la próxima vez que genere el proyecto, ya que Visual Studio reemplaza el documento de la carpeta de resultados de la compilación con una copia del documento de la carpeta de proyecto principal. Si desea guardar el código de VBA, puede copiarlo en el documento de la carpeta de proyecto. Para obtener más información, consulte Llamar a código de VBA en personalizaciones de nivel de documento.

Para llamar al método desde código de VBA

  1. Presione F5 para ejecutar el proyecto.

  2. En la ficha Programador, en el grupo Código, haga clic en Visual Basic.

    Se abre 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 del ensamblado de personalización. La macro tiene acceso a este método utilizando la propiedad CallVSTOAssembly del objeto ThisDocument. La propiedad se generó automáticamente al establecer la propiedad EnableVbaCallers anterior en este tutorial.

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

  6. Compruebe que se agrega una nueva tabla al documento.

  7. Salga de Word sin guardar los cambios.

Pasos siguientes

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

Vea también

Tareas

Cómo: Exponer código a VBA en un proyecto de Visual Basic

Cómo: Exponer código a VBA en un proyecto de Visual C#

Tutorial: Llamar a código de VBA en un proyecto de Visual C#

Otros recursos

Combinar personalizaciones de VBA y de nivel de documento

Programar personalizaciones de nivel de documento