Partager via


Limitations de programmation des éléments hôtes et des contrôles hôtes

Mise à jour : Juillet 2008

S'applique à

Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et versions de Microsoft Office spécifiés.

Projets au niveau du document

  • Excel 2003

  • Excel 2007

  • Word 2003

  • Word 2007

Projets au niveau de l'application

  • Excel 2007

  • Word 2007

Pour plus d'informations, consultez Fonctionnalités disponibles par type d'application et de projet.

Chaque élément hôte et chaque contrôle hôte sont conçus pour se comporter comme un objet Microsoft Office Word ou Microsoft Office Excel natif, avec des fonctionnalités supplémentaires. Toutefois, il existe des différences fondamentales entre le comportement d'éléments hôtes et de contrôles hôtes et celui des objets Office natifs au moment de l'exécution.

Pour obtenir des informations générales sur les éléments hôtes et les contrôles hôtes, consultez Vue d'ensemble des éléments hôtes et des contrôles hôtes.

Création d'éléments hôtes par programme

Lorsque vous créez ou ouvrez un document, un classeur ou une feuille de calcul par programme au moment de l'exécution, l'élément n'est pas un élément hôte. Le nouvel objet est en fait un objet Office natif. Par exemple, si vous utilisez la méthode Add pour créer un document Word au moment de l'exécution, il s'agira d'un objet Microsoft.Office.Interop.Word.Document natif plutôt que d'un élément hôte Microsoft.Office.Tools.Word.Document. De la même façon, lorsque vous créez une feuille de calcul au moment de l'exécution à l'aide de la méthode Add, vous obtenez un objet natif Microsoft.Office.Interop.Excel.Worksheet plutôt qu'un élément hôte Microsoft.Office.Tools.Excel.Worksheet.

Dans les projets au niveau du document, vous ne pouvez pas créer d'éléments hôtes au moment de l'exécution. Dans les projets au niveau du document, les éléments hôtes ne peuvent être créés qu'au moment du design. Pour plus d'informations, consultez les rubriques Élément hôte de document, Élément hôte de classeur et Élément hôte de feuille de calcul.

À compter de Visual Studio 2008 Service Pack 1, vous pouvez créer des éléments hôtes Microsoft.Office.Tools.Word.Document, Microsoft.Office.Tools.Excel.Workbookou Microsoft.Office.Tools.Excel.Worksheet au moment de l'exécution dans les compléments d'application pour Excel 2007 et Word 2007. Pour plus d'informations, consultez Extension de documents Word et de classeurs Excel dans des compléments d'application au moment de l'exécution..

Création de contrôles hôtes par programme

Vous pouvez ajouter des contrôles hôtes à un élément hôte Microsoft.Office.Tools.Word.Document ou Microsoft.Office.Tools.Excel.Worksheet par programme au moment de l'exécution. Pour plus d'informations, consultez Ajout de contrôles à des documents Office au moment de l'exécution.

Vous ne pouvez pas ajouter de contrôles hôtes à un Microsoft.Office.Interop.Word.Document ou Microsoft.Office.Interop.Excel.Worksheet natif.

Remarque :

Les contrôles hôtes suivants ne peuvent pas être ajoutés par programme aux feuilles de calcul ou aux documents : XmlMappedRange, XMLNodeet XMLNodes.

Description des différences de type entre les éléments hôtes, les contrôles hôtes et les objets Office natifs

Pour chaque élément hôte et contrôle hôte, il existe un objet Microsoft Office Word ou Microsoft Office Excel natif sous-jacent. Vous pouvez accéder à l'objet sous-jacent en utilisant la propriété InnerObject de l'élément hôte ou du contrôle hôte. Toutefois, il n'est pas possible de caster un objet Office natif vers son élément hôte ou son contrôle hôte correspondant. Si vous essayez d'effectuer un cast d'un objet Office natif en élément ou contrôle hôte, une exception InvalidCastException est levée.

Il existe plusieurs scénarios dans lesquels les différences entre les types d'éléments hôtes et contrôles hôtes et les objets Office natifs sous-jacents peuvent affecter votre code.

Passage de contrôles hôtes aux méthodes et propriétés

Dans Word, vous ne pouvez pas passer de contrôle hôte à une méthode ou une propriété qui requiert un objet Word natif comme paramètre. Vous devez utiliser la propriété InnerObject du contrôle hôte pour retourner l'objet Word natif sous-jacent. Par exemple, vous pouvez passer un objet Microsoft.Office.Interop.Word.Bookmark à une méthode en passant la propriété InnerObject du contrôle hôte Microsoft.Office.Tools.Word.Bookmark à la méthode.

Dans Excel, il existe deux cas où vous devez utiliser la propriété InnerObject du contrôle hôte :

  • Lorsque la méthode ou la propriété attend l'objet Excel sous-jacent.

  • Lorsque l'attribut ExcelLocale1033Attribute a la valeur false et que la méthode ou la propriété attend Object au lieu de l'objet Excel sous-jacent.

L'exemple suivant crée un contrôle Microsoft.Office.Tools.Excel.NamedRange et le passe à la méthode AutoFill. Le code utilise la propriété InnerObject sur la plage nommée pour retourner le contrôle Microsoft.Office.Interop.Excel.Range Office sous-jacent qui est requis par la méthode AutoFill.

Me.Range("A1").Value2 = "Monday"
Me.Range("A2").Value2 = "Tuesday"

Dim dayRange As Microsoft.Office.Tools.Excel.NamedRange = _
    Me.Controls.AddNamedRange(Me.Range("A1", "A7"), "dayRange")

Me.Range("A1", "A2").AutoFill(dayRange.InnerObject, Excel.XlAutoFillType.xlFillDays)
this.Range["A1", missing].Value2 = "Monday";
this.Range["A2", missing].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);

Types de retour de méthodes et propriétés Office natives

La plupart des méthodes et propriétés des éléments hôtes retournent l'objet Office natif sous-jacent sur lequel l'élément hôte repose. Par exemple, la propriété Parent d'un contrôle hôte NamedRange dans Excel retourne un objet Microsoft.Office.Interop.Excel.Worksheet plutôt qu'un élément hôte Microsoft.Office.Tools.Excel.Worksheet. De la même façon, la propriété Parent d'un contrôle hôte RichTextContentControl dans Word retourne un objet Microsoft.Office.Interop.Word.Document plutôt qu'un élément hôte Microsoft.Office.Tools.Word.Document.

Accès à des collections de contrôles hôtes

Visual Studio Tools pour Office ne fournit pas de collections individuelles pour chaque type de contrôle hôte. Par exemple, il n'est pas possible d'énumérer chaque contrôle Microsoft.Office.Tools.Word.Bookmark dans le document à l'aide de la collection Microsoft.Office.Interop.Word.Bookmarks. La collection Microsoft.Office.Interop.Word.Bookmarks inclut tous les signets du document ; elle ne fait pas la distinction entre un contrôle Microsoft.Office.Tools.Word.Bookmark et un Microsoft.Office.Interop.Word.Bookmark.

Vous pouvez utiliser les propriétés Worksheet.Controls ou Document.Controls à itérer à travers tous les contrôles (à la fois les contrôles hôtes et les contrôles Windows Forms) sur le document ou la feuille de calcul, puis rechercher les éléments qui correspondent au type du contrôle hôte qui vous intéresse. L'exemple de code suivant examine chaque contrôle d'un document Word et détermine s'il est un Microsoft.Office.Tools.Word.Bookmark.

Dim targetControl As Object
For Each targetControl In Me.Controls

    If TypeOf (targetControl) Is Microsoft.Office.Tools.Word.Bookmark Then
        Dim bookMark As Microsoft.Office.Tools.Word.Bookmark = _
            CType(targetControl, Microsoft.Office.Tools.Word.Bookmark)

        ' Do some work with the book mark here.
    End If
Next
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 book mark here.
    }
}

Voir aussi

Concepts

Vue d'ensemble des éléments hôtes et des contrôles hôtes

Élément hôte de feuille de calcul

Élément hôte de classeur

Élément hôte de document

Référence

Worksheet.Controls

Document.Controls

Autres ressources

Contrôles hôtes Word

Contrôles hôtes Excel

Historique des modifications

Date

Historique

Raison

Juillet 2008

Ajout d'informations relatives à la création d'éléments hôtes à l'aide de compléments d'application.

Modifications de fonctionnalités dans le SP1.