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
Projets au niveau de l'application
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
Référence
Autres ressources
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. |