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.
Al ampliar Microsoft Office Word o Microsoft Office Excel mediante una personalización de nivel de documento, puede realizar las siguientes tareas:
Automatice la aplicación mediante su modelo de objetos.
Agregue controles a la superficie del documento.
Llame al código de Visual Basic para Aplicaciones (VBA) en el documento desde el ensamblado de personalización.
Llame al código en el ensamblado de personalización desde VBA.
Administrar determinados aspectos del documento mientras se encuentra en un servidor que no tiene Instalado Microsoft Office.
Personalice la interfaz de usuario (UI) de la aplicación.
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.
Algunos aspectos de la escritura de código en proyectos de nivel de documento son diferentes de otros tipos de proyectos en Visual Studio. Muchas de estas diferencias se deben a la forma en que los modelos de objetos de Office se exponen al código administrado. Para obtener más información, vea Escribir código en soluciones de Office.
Para obtener información general sobre las personalizaciones de nivel de documento y otros tipos de soluciones que puede crear mediante las herramientas de desarrollo de Office en Visual Studio, consulte Introducción al desarrollo de soluciones de Office (VSTO).
Uso de las clases generadas en proyectos de nivel de documento
Al crear un proyecto de nivel de documento, Visual Studio genera automáticamente una clase en el proyecto que puede usar para empezar a escribir el código. Visual Studio genera diferentes clases para Word y Excel:
En los proyectos de nivel de documento para Word, la clase se llama
ThisDocumentde forma predeterminada.Los proyectos de nivel de documento para Excel tienen varias clases generadas: una para el propio libro y otra para cada hoja de cálculo. De forma predeterminada, estas clases tienen los siguientes nombres:
ThisWorkbookSheet1Sheet2Sheet3
La clase generada incluye controladores de eventos a los que se llama cuando se abre o cierra el documento. Para ejecutar código cuando se abra el documento, agregue código al controlador de
Startupeventos. Para ejecutar código justo antes de cerrar el documento, agregue código al controlador deShutdowneventos. Para obtener más información, vea Eventos en proyectos de Office.
Descripción del diseño de las clases generadas
En los proyectos que tienen como destino .NET Framework 4 o .NET Framework 4.5, los tipos de elementos host en el entorno de ejecución de Visual Studio Tools para Office son interfaces, por lo que las clases generadas no pueden derivar su implementación de ellos. En su lugar, las clases generadas derivan la mayoría de sus miembros de las siguientes clases base:
ThisDocument: deriva de DocumentBase.ThisWorkbook: deriva de WorkbookBase.Sheetn: deriva de WorksheetBase.Estas clases base redirigen todas las llamadas a sus miembros a implementaciones internas de las interfaces de elemento host correspondientes en el entorno de ejecución de Visual Studio Tools para Office. Por ejemplo, si llama al método Protect de la clase
ThisDocument, la clase DocumentBase redirige esta llamada a la implementación interna de la interfaz Document en el tiempo de ejecución de Visual Studio Tools para Office.
Acceso al modelo de objetos de la aplicación host
Para acceder al modelo de objetos de la aplicación host, use miembros de la clase generada en el proyecto. Cada una de estas clases corresponde a un objeto del modelo de objetos de Excel o Word, y contienen la mayoría de las mismas propiedades, métodos y eventos. Por ejemplo, la ThisDocument clase de un proyecto de nivel de documento para Word proporciona la mayoría de los mismos miembros que el Document objeto en el modelo de objetos de Word.
En el ejemplo de código siguiente se muestra cómo usar el modelo de objetos de Word para guardar el documento que forma parte de una personalización de nivel de documento para Word. Este ejemplo está pensado para ejecutarse desde la ThisDocument clase .
Para hacer lo mismo desde fuera de la ThisDocument clase , use el Globals objeto para tener acceso a la ThisDocument clase . Por ejemplo, puede agregar este código a un archivo de código del panel de acciones si desea incluir un botón Guardar en la interfaz de usuario del panel de acciones.
Dado que la ThisDocument clase obtiene la mayoría de sus miembros del Document elemento host, el Save método al que se llama en este código es realmente el Save método del Document elemento host. Este método corresponde al Save método del Document objeto en el modelo de objetos de Word.
Para obtener más información sobre el uso de los modelos de objetos de Word y Excel, vea Introducción al modelo de objetos de Word y Información general sobre el modelo de objetos de Excel.
Para obtener más información sobre el Globals objeto, vea Acceso global a objetos en proyectos de Office.
Agregar controles a documentos
Para personalizar la interfaz de usuario del documento, puede agregar controles de Windows Forms o controles host a la superficie del documento. Al combinar diferentes conjuntos de controles y escribir código, puede enlazar los controles a los datos, recopilar información del usuario y responder a las acciones del usuario.
Los controles host son clases que extienden algunos de los objetos del modelo de objetos de Word y Excel. Por ejemplo, el ListObject control host proporciona toda la funcionalidad de ListObject en Excel. Sin embargo, el ListObject control host también tiene eventos adicionales y funcionalidades de enlace de datos.
Para obtener más información, consulte Información general sobre elementos host y controles de host y información general sobre controles de Windows Forms en documentos de Office.
Combinación de personalizaciones de VBA y de nivel de documento
Puede usar código VBA en un documento que forme parte de una personalización de nivel de documento. Puede llamar al código VBA en el documento desde el ensamblado de personalización y también puede configurar el proyecto para habilitar el código VBA en el documento para llamar al código en el ensamblado de personalización.
Para obtener más información, consulte Combinar VBA y personalizaciones de nivel de documento.
Administrar documentos en un servidor
Puede administrar varios aspectos diferentes de las personalizaciones de nivel de documento en un servidor que no tenga instalado Microsoft Office Word o Microsoft Office Excel. Por ejemplo, puede acceder a los datos y modificarlos en la memoria caché de datos del documento. También puede administrar el ensamblado de personalización asociado al documento. Por ejemplo, puede quitar mediante programación el ensamblado del documento para que el documento ya no ejecute el código o puede adjuntar mediante programación un ensamblado a un documento.
Para obtener más información, vea Administrar documentos en un servidor mediante la clase ServerDocument.
Personalizar la interfaz de usuario de las aplicaciones de Microsoft Office
Puede personalizar la interfaz de usuario de Word y Excel de las maneras siguientes mediante una personalización de nivel de documento:
Agregue controles host o controles de Windows Forms a la superficie del documento.
Para obtener más información, consulte Automatización de Word mediante objetos extendidos, Automatización de Excel mediante objetos extendidos y controles de Windows Forms en la información general sobre documentos de Office.
Agregue un panel de acciones al documento.
Para obtener más información, vea Información general sobre el panel Acciones.
Agregue pestañas personalizadas a la cinta de opciones.
Para obtener más información, consulte Descripción general de la cinta de opciones.
Agregue grupos personalizados a una pestaña integrada en la cinta de opciones.
Para obtener más información, consulte Cómo personalizar una pestaña integrada.
Para obtener más información sobre cómo personalizar la interfaz de usuario de las aplicaciones de Microsoft Office, consulte Personalización de la interfaz de usuario de Office.
Obtener objetos extendidos de objetos nativos de Office en personalizaciones de nivel de documento
Muchos controladores de eventos para eventos de Office reciben un objeto nativo de Office que representa el libro, la hoja de cálculo o el documento que generó el evento. En algunos casos, podrías querer ejecutar un código solo si el libro o documento en tu personalización a nivel de documento generó el evento. Por ejemplo, en una personalización de nivel de documento para Excel, es posible que desee ejecutar código cuando el usuario activa una de las hojas de cálculo del libro personalizado, pero no cuando el usuario activa una hoja de cálculo en algún otro libro que se abre al mismo tiempo.
Cuando tenga un objeto nativo de Office, puede probar si ese objeto se ha ampliado en un elemento host o un control host en una personalización de nivel de documento. Los elementos host y los controles host son tipos proporcionados por el entorno de ejecución de Visual Studio Tools para Office que agregan funcionalidad a objetos que existen de forma nativa en los modelos de objetos de Word o Excel ( denominados objetos nativos de Office). En conjunto, los elementos host y los controles host también se denominan objetos extendidos. Para obtener más información sobre los elementos host y los controles host, consulte Información general sobre los elementos host y los controles host.
Descripción de los métodos GetVstoObject y HasVstoObject
Para probar un objeto nativo de Office, use los métodos HasVstoObject y GetVstoObject en su proyecto:
Utilice el método
HasVstoObjectsi desea determinar si el objeto nativo de Office tiene un objeto extendido en su personalización. Este método devuelve true si el objeto nativo de Office tiene un objeto extendido y false en caso contrario.Use el
GetVstoObjectmétodo si desea obtener el objeto extendido para un objeto nativo de Office. Este método devuelve un ListObjectobjeto , Workbook, Worksheeto Document si el objeto nativo de Office especificado tiene uno. De lo contrario,GetVstoObjectdevuelve null. Por ejemplo, elGetVstoObjectmétodo devuelve un Document si el objeto especificado Document es el objeto subyacente del documento en el proyecto de documento de Word.En los proyectos de nivel de documento, no puede usar el método
GetVstoObjectpara crear un nuevo elemento host Workbook, Worksheet o Document en tiempo de ejecución. Puede usar este método solo para acceder a los elementos host existentes que se generan en el proyecto en tiempo de diseño. Si desea crear nuevos elementos de host en tiempo de ejecución, debe desarrollar un proyecto de complemento de VSTO. Para obtener más información, vea Limitaciones programáticas de elementos host y controles host y Extender documentos de Word y libros de Excel en complementos VSTO en tiempo de ejecución.
Usar los métodos GetVstoObject y HasVstoObject
Para llamar al método HasVstoObject o método GetVstoObject, use el método Globals.Factory.GetVstoObject o Globals.Factory.HasVstoObject, y pase el objeto nativo de Word o Excel (como un Document o Worksheet) que desea probar.