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.
Cada elemento host y control host está diseñado para comportarse como un objeto nativo de Microsoft Office Word o Microsoft Office Excel correspondiente, con funcionalidad adicional. Sin embargo, hay algunas diferencias fundamentales entre el comportamiento de los elementos host y los controles host y los objetos nativos de Office en tiempo de ejecución.
Para obtener información general sobre los elementos host y los controles host, consulte Información general sobre los elementos host y los controles host.
Se aplica a: La información de este tema se aplica a proyectos de nivel de documento y proyectos de complementos de VSTO para Excel y Word. Para obtener más información, vea Características disponibles por aplicación de Office y tipo de proyecto.
Crear elementos host mediante programación
Al crear o abrir mediante programación un documento, libro o hoja de cálculo en tiempo de ejecución mediante el modelo de objetos de Word o Excel, el elemento no es un elemento host. En su lugar, el nuevo objeto es un objeto nativo de Office. Por ejemplo, si usa el Add método para crear un nuevo documento de Word en tiempo de ejecución, será un objeto nativo Document en lugar de un Document elemento host. De forma similar, cuando se crea una nueva hoja de cálculo en tiempo de ejecución mediante el Add método , se obtiene un objeto nativo Worksheet en lugar de un Worksheet elemento host.
En los proyectos de nivel de documento, no se pueden crear elementos host en tiempo de ejecución. Los elementos host solo se pueden crear en tiempo de diseño en proyectos de nivel de documento. Para obtener más información, consulte Elemento host de documento, Elemento host de libro de trabajo y Elemento host de hoja de cálculo.
En los proyectos de complemento de VSTO, puede crear Documentelementos de host, Workbook o Worksheet en tiempo de ejecución. Para obtener más información, consulte Extender documentos de Word y libros de trabajo de Excel en complementos de VSTO en tiempo de ejecución.
Crear controles host mediante programación
Puede agregar controles host mediante programación a un Document elemento host o Worksheet en tiempo de ejecución. Para obtener más información, vea Agregar controles a documentos de Office en tiempo de ejecución.
No se pueden agregar controles host a un nativo Document o Worksheet.
Nota:
Los siguientes controles host no se pueden agregar mediante programación a hojas de cálculo o documentos: XmlMappedRange, XMLNodey XMLNodes.
Descripción de las diferencias de tipos entre los elementos host, los controles host y los objetos nativos de Office
Para cada elemento anfitrión y control anfitrión, existe un objeto nativo de Microsoft Office Word o Microsoft Office Excel subyacente. Puede acceder al objeto subyacente mediante la propiedad InnerObject del elemento anfitrión o el control anfitrión. Sin embargo, no hay ninguna manera de convertir un objeto nativo de Office en su correspondiente elemento o control de host. Si intenta convertir un objeto nativo de Office en el tipo de un elemento host o un control host, se produce una InvalidCastException excepción .
Hay varios escenarios en los que las diferencias entre los tipos de elementos host y los controles host y los objetos nativos subyacentes de Office pueden afectar al código.
Pasar controles del host a métodos y propiedades
En Word, no se puede pasar un control host a un método o propiedad que requiera un objeto nativo de Word como parámetro. Debe usar la propiedad InnerObject del control host para devolver el objeto nativo subyacente de Word. Por ejemplo, puede pasar un objeto Bookmark a un método utilizando la propiedad InnerObject del control host Bookmark.
En Excel, debe utilizar la propiedad InnerObject del control de hosts para pasar este control a un método o propiedad cuando dicho método o propiedad requiera el objeto de Excel subyacente.
En el ejemplo siguiente se crea un NamedRange control y se pasa al AutoFill método . El código utiliza la propiedad InnerObject del rango denominado para devolver el Office Range subyacente que requiere el método AutoFill.
this.Range["A1"].Value2 = "Monday";
this.Range["A2"].Value2 = "Tuesday";
Microsoft.Office.Tools.Excel.NamedRange dayRange =
this.Controls.AddNamedRange(this.Range["A1", "A7"], "dayRange");
this.Range["A1", "A2"].AutoFill(dayRange.InnerObject, Excel.XlAutoFillType.xlFillDays);
Tipos de retorno de métodos y propiedades nativos de Office
La mayoría de los métodos y propiedades de los elementos host devuelven el objeto nativo subyacente de Office en el que se basa el elemento host. Por ejemplo, la Parent propiedad de un NamedRange control host en Excel devuelve un Worksheet objeto en lugar de un Worksheet elemento host. Del mismo modo, la Parent propiedad de un RichTextContentControl control host en Word devuelve un Document objeto en lugar de un Document elemento host.
Acceso a colecciones de controles host
El entorno de ejecución de Visual Studio Tools para Office no proporciona colecciones individuales para cada tipo de control host. En su lugar, use la propiedad Controls de un elemento host para recorrer en iteración todos los controles administrados (controles host y controles de Windows Forms) en el documento o hoja de cálculo y busque elementos que coincidan con el tipo del control host que le interese. En el ejemplo de código siguiente se examina cada control de un documento de Word y se determina si el control es .Bookmark
foreach (object targetControl in this.Controls)
{
Microsoft.Office.Tools.Word.Bookmark bookMark =
targetControl as Microsoft.Office.Tools.Word.Bookmark;
if (bookMark != null)
{
// Do some work with the bookmark here.
}
}
Para obtener más información sobre la propiedad Controls de los elementos host, vea Agregar controles a documentos de Office en tiempo de ejecución.
Los modelos de objetos de Word y Excel incluyen propiedades que exponen colecciones de controles nativos en documentos y hojas de cálculo. No se puede acceder a los controles administrados mediante estas propiedades. Por ejemplo, no es posible enumerar cada Bookmark control host de un documento utilizando la propiedad Bookmarks de un Document o la propiedad Bookmarks de un Document. Estas propiedades incluyen solo los Bookmark controles del documento; no contienen los Bookmark controles host del documento.