Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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) en el documento. El procedimiento implica tres pasos básicos: agregar un método a la ThisDocument clase de elemento host, exponer el método al código VBA y, a continuación, llamar al método desde código VBA en el 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, vea Características disponibles por aplicación de Office y tipo de proyecto.
Aunque en este tutorial se usa Word específicamente, los conceptos mostrados por el tutorial también se aplican a proyectos de nivel de documento para Excel.
En este tutorial se muestran las siguientes tareas:
Crear un documento que contenga código VBA.
Confiar en la ubicación del documento mediante el Centro de confianza en Word.
Agregar un método a la
ThisDocumentclase de elemento host.Exponer el método al código VBA.
Llamada al método desde código VBA.
Nota:
El equipo puede mostrar nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las instrucciones siguientes. La edición de Visual Studio que tiene y la configuración que usa determinan estos elementos. Para más información, vea Personalizar el IDE de Visual Studio.
Prerrequisitos
Necesitará los componentes siguientes para completar este tutorial:
Edición de Visual Studio que incluye las herramientas de desarrollo de Microsoft Office. Para obtener más información, vea Configurar un equipo para desarrollar soluciones de Office.
Microsoft Word
Creación de un documento que contenga código VBA
El primer paso es crear un documento habilitado para macros que contenga una macro de VBA simple. El documento debe contener un proyecto de VBA antes de crear un proyecto de Visual Studio basado en ese documento. De lo contrario, Visual Studio no puede modificar el proyecto de VBA para permitir que el código VBA llame al ensamblado de personalización.
Si ya tiene un documento que contiene código VBA que desea usar, puede omitir este paso.
Para crear un documento que contenga código VBA
Inicie Word.
Guarde el documento activo como un documento habilitado para macros de Word (*.docm) con el nombre DocumentWithVBA. Guárdelo en una ubicación cómoda, como el escritorio.
En la cinta de opciones, haga clic en la pestaña Programador .
Nota:
Si la pestaña Programador 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 abre el Editor de Visual Basic.
En la ventana Proyecto , haga doble clic en ThisDocument.
Se abre el archivo de código del
ThisDocumentobjeto .Agregue el siguiente código VBA al archivo de código. Este código define una función sencilla 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 SubGuarde 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 que creó anteriormente.
Para crear un proyecto
Inicie Visual Studio.
En el menú Archivo, seleccione Nuevo y luego haga clic en Proyecto. Si el IDE está configurado para usar la configuración de desarrollo de Visual Basic, en el menú Archivo , haga clic en Nuevo proyecto.
En el panel de plantillas, expanda Visual Basic y, a continuación, expanda Office/SharePoint.
Seleccione el nodo Complementos de Office .
En la lista de plantillas de proyecto, seleccione el proyecto Documento de Word 2010 o Documento de Word 2013 .
En el cuadro Nombre , escriba CallingCodeFromVBA.
Haz clic en Aceptar.
Se abre el Asistente para proyectos de Visual Studio Tools para Office .
Seleccione Copiar un documento existente y, 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 este documento en su lugar.
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
Para poder exponer código en la solución al código VBA del documento, debe confiar en VBA en el documento para ejecutarlo. Hay varias maneras 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
Inicie Word.
Haga clic en la pestaña Archivo .
Haga clic en el botón Opciones de Word .
En el panel categorías, haga clic en Centro de confianza.
En el panel de detalles, haga clic en Configuración del Centro de confianza.
En el panel de categorías, haga clic en Ubicaciones de confianza.
En el panel de detalles, haga clic en Agregar nueva ubicación.
En el cuadro de diálogo Ubicación de confianza de Microsoft Office , vaya a la carpeta que contiene el proyecto CallingCodeFromVBA .
Seleccione Las subcarpetas de esta ubicación son también de confianza.
En el cuadro de diálogo Ubicación de confianza de Microsoft Office , haga clic en Aceptar.
En el cuadro de diálogo Centro de confianza , haga clic en Aceptar.
En el cuadro de diálogo Opciones de Word , haga clic en Aceptar.
Salir 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 puede llamar desde el código VBA.
Para agregar un método a la clase ThisDocument
En el Explorador de soluciones, haga clic con el botón derecho en ThisDocument.vb y, a continuación, haga clic en Ver código.
El archivo ThisDocument.vb se abre en el Editor de código.
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 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 SubCompile el proyecto.
Exposición del método al código VBA
Para exponer el CreateTable método al código VBA en el documento, establezca la propiedad EnableVbaCallers para el ThisDocument elemento host en True.
Para exponer el método al código VBA
En el Explorador de soluciones, haga doble clic en ThisDocument.vb.
El archivo DocumentWithVBA se abre en el diseñador.
En la ventana Propiedades , seleccione la propiedad EnableVbaCallers y cambie el valor a True.
Haga clic en Aceptar en el mensaje que se muestra.
Compile el proyecto.
Llamada al método desde código VBA
Ahora puede llamar al método CreateTable desde el código VBA en el documento.
Nota:
En esta guía paso a paso, agregará código VBA al documento mientras depura el proyecto. El código VBA que agregue a este documento se sobrescribirá la próxima vez que compile el proyecto, ya que Visual Studio reemplaza el documento en la carpeta de salida de compilación por una copia del documento de la carpeta principal del proyecto. 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
Presione F5 para ejecutar el proyecto.
En la pestaña Programador , en el grupo Código , haga clic en Visual Basic.
Se abre el Editor de Visual Basic.
En el menú Insertar , haga clic en Módulo.
Agregue el código siguiente al nuevo módulo.
Este código llama al método
CreateTabledel ensamblado de personalización. La macro tiene acceso a este método mediante laCallVSTOAssemblypropiedad delThisDocumentobjeto . 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 SubPresione F5.
Compruebe que se agregó una nueva tabla al documento.
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:
Ejecute código en una personalización de Visual C# desde VBA. Este proceso es diferente del proceso de Visual Basic. Para obtener más información, vea Tutorial: Llamada a código desde VBA en un proyecto de Visual C#.
Ejecute código en un complemento VSTO desde VBA. Para obtener más información, vea Tutorial: Llamar al código en un complemento de VSTO desde VBA.