Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous étendez Microsoft Office Word ou Microsoft Office Excel à l’aide d’une personnalisation au niveau du document, vous pouvez effectuer les tâches suivantes :
Automatisez l’application à l’aide de son modèle objet.
Ajoutez des contrôles à la surface du document.
Appelez le code Visual Basic pour Applications (VBA) dans le document à partir de l’assembly de personnalisation.
Appelez du code dans l'assembly de personnalisation depuis VBA.
Gérez certains aspects du document pendant qu’il se trouve sur un serveur sur lequel Microsoft Office n’est pas installé.
Personnalisez l’interface utilisateur de l’application.
S’applique à : Les informations contenues dans cette rubrique s’appliquent aux projets au niveau du document pour Excel et Word. Pour plus d’informations, consultez Fonctionnalités disponibles par type d’application et de projet Office.
Certains aspects de l’écriture de code dans des projets au niveau du document diffèrent d’autres types de projets dans Visual Studio. La plupart de ces différences sont causées par la façon dont les modèles objet Office sont exposés au code managé. Pour plus d’informations, consultez Écrire du code dans les solutions Office.
Pour obtenir des informations générales sur les personnalisations au niveau du document et d’autres types de solutions que vous pouvez créer à l’aide des outils de développement Office dans Visual Studio, consultez la vue d’ensemble du développement de solutions Office (VSTO).
Utiliser les classes générées dans les projets au niveau du document
Lorsque vous créez un projet au niveau du document, Visual Studio génère automatiquement une classe dans le projet que vous pouvez utiliser pour commencer à écrire votre code. Visual Studio génère différentes classes pour Word et Excel :
Dans les projets au niveau du document pour Word, la classe est appelée
ThisDocumentpar défaut.Les projets au niveau du document pour Excel ont plusieurs classes générées : une pour le classeur lui-même et une pour chaque feuille de calcul. Par défaut, ces classes ont les noms suivants :
ThisWorkbookSheet1Sheet2Sheet3
La classe générée inclut des gestionnaires d’événements appelés lorsque le document est ouvert ou fermé. Pour exécuter du code lorsque le document est ouvert, ajoutez du code au gestionnaire d’événements
Startup. Pour exécuter du code juste avant la fermeture du document, ajoutez du code au gestionnaire d’événementsShutdown. Pour plus d’informations, consultez Événements dans les projets Office.
Comprendre la conception des classes générées
Dans les projets qui ciblent .NET Framework 4 ou .NET Framework 4.5, les types d’éléments hôtes dans le runtime Visual Studio Tools pour Office sont des interfaces. Les classes générées ne peuvent donc pas dériver leur implémentation. Au lieu de cela, les classes générées dérivent la plupart de leurs membres des classes de base suivantes :
ThisDocument: dérive de DocumentBase.ThisWorkbook: dérive de WorkbookBase.Sheetn : dérive de WorksheetBase.Ces classes de base redirigent tous les appels vers leurs membres vers des implémentations internes des interfaces d’élément hôte correspondantes dans le runtime Visual Studio Tools pour Office. Par exemple, si vous appelez la Protect méthode de la
ThisDocumentclasse, la DocumentBase classe redirige cet appel vers l’implémentation interne de l’interface Document dans Visual Studio Tools pour Office runtime .
Accéder au modèle objet de l’application hôte
Pour accéder au modèle objet de l’application hôte, utilisez les membres de la classe générée dans votre projet. Chacune de ces classes correspond à un objet dans le modèle objet d’Excel ou Word, et elles contiennent la plupart des mêmes propriétés, méthodes et événements. Par exemple, la ThisDocument classe d’un projet au niveau du document pour Word fournit la plupart des mêmes membres que l’objet Document dans le modèle objet Word.
L’exemple de code suivant montre comment utiliser le modèle objet Word pour enregistrer le document qui fait partie d’une personnalisation au niveau du document pour Word. Cet exemple est destiné à être exécuté à partir de la ThisDocument classe.
Pour faire la même chose en dehors de la ThisDocument classe, utilisez l’objet Globals pour accéder à la ThisDocument classe. Par exemple, vous pouvez ajouter ce code à un fichier de code du volet Actions si vous souhaitez inclure un bouton Enregistrer dans l’interface utilisateur du volet Actions.
Étant donné que la ThisDocument classe obtient la plupart de ses membres à partir de l’élément Document hôte, la Save méthode appelée dans ce code est vraiment la Save méthode de l’élément Document hôte. Cette méthode correspond à la Save méthode de l’objet Document dans le modèle objet Word.
Pour plus d’informations sur l’utilisation des modèles objet de Word et Excel, consultez vue d’ensemble du modèle objet Word et vue d’ensemble du modèle objet Excel.
Pour plus d’informations sur l’objet Globals , consultez l’accès global aux objets dans les projets Office.
Ajouter des contrôles à des documents
Pour personnaliser l’interface utilisateur du document, vous pouvez ajouter des contrôles Windows Forms ou des contrôles hôtes à l’aire du document. En combinant différents ensembles de contrôles et d’écriture de code, vous pouvez lier les contrôles aux données, collecter des informations de l’utilisateur et répondre aux actions de l’utilisateur.
Les contrôles hôtes sont des classes qui étendent certains des objets dans le modèle objet Word et Excel. Par exemple, le ListObject contrôle hôte fournit toutes les fonctionnalités d’Excel ListObject . Toutefois, le ListObject contrôle hôte dispose également d’événements et de fonctionnalités de liaison de données supplémentaires.
Pour plus d’informations, consultez la vue d’ensemble des éléments hôtes et des contrôles hôtes et la vue d’ensemble des contrôles Windows Forms sur les documents Office.
Combiner des personnalisations au niveau du document et VBA
Vous pouvez utiliser du code VBA dans un document qui fait partie d’une personnalisation au niveau du document. Vous pouvez appeler du code VBA dans le document à partir de l’assembly de personnalisation, et vous pouvez également configurer votre projet pour activer le code VBA dans le document pour appeler du code dans l’assembly de personnalisation.
Pour plus d’informations, consultez Combiner des personnalisations au niveau du document et VBA.
Gérer les documents sur un serveur
Vous pouvez gérer différents aspects des personnalisations au niveau du document sur un serveur sur lequel Microsoft Office Word ou Microsoft Office Excel n’est pas installé. Par exemple, vous pouvez accéder aux données et les modifier dans le cache de données du document. Vous pouvez également gérer l’assembly de personnalisation associé au document. Par exemple, vous pouvez supprimer par programmation l’assembly du document afin que le document n’exécute plus votre code, ou vous pouvez attacher par programmation un assembly à un document.
Pour plus d’informations, consultez Gérer les documents sur un serveur à l’aide de la classe ServerDocument.
Personnaliser l’interface utilisateur des applications Microsoft Office
Vous pouvez personnaliser l’interface utilisateur de Word et Excel de la manière suivante à l’aide d’une personnalisation au niveau du document :
Ajoutez des contrôles hôtes ou des contrôles Windows Forms à la surface du document.
Pour plus d’informations, consultez Automatiser Word à l’aide d’objets étendus, Automatiser Excel à l’aide d’objets étendus et de contrôles Windows Forms sur la vue d’ensemble des documents Office.
Ajoutez un volet Actions au document.
Pour plus d’informations, consultez la vue d’ensemble du volet Actions.
Ajoutez des onglets personnalisés au ruban.
Pour plus d’informations, consultez Vue d’ensemble du ruban.
Ajoutez des groupes personnalisés à un onglet intégré du ruban.
Pour plus d’informations, consultez Guide pratique pour personnaliser un onglet intégré.
Pour plus d’informations sur la personnalisation de l’interface utilisateur des applications Microsoft Office, consultez Personnalisation de l’interface utilisateur d’Office.
Obtenir des objets étendus à partir d’objets Office natifs dans les personnalisations au niveau du document
De nombreux gestionnaires d’événements pour les événements Office reçoivent un objet Office natif qui représente le classeur, la feuille de calcul ou le document qui a déclenché l’événement. Dans certains cas, vous pouvez exécuter du code uniquement si le classeur ou le document de votre personnalisation au niveau du document a déclenché l’événement. Par exemple, dans une personnalisation au niveau du document pour Excel, vous pouvez exécuter du code lorsque l’utilisateur active l’une des feuilles de calcul dans le classeur personnalisé, mais pas lorsque l’utilisateur active une feuille de calcul dans un autre classeur qui doit être ouverte en même temps.
Lorsque vous disposez d’un objet Office natif, vous pouvez tester si cet objet a été étendu à un élément hôte ou un contrôle hôte dans une personnalisation au niveau du document. Les éléments hôtes et les contrôles hôtes sont des types fournis par le runtime Visual Studio Tools pour Office qui ajoutent des fonctionnalités aux objets qui existent en mode natif dans les modèles objet Word ou Excel (appelés objets Office natifs). Collectivement, les éléments hôtes et les contrôles hôtes sont également appelés objets étendus. Pour plus d’informations sur les éléments hôtes et les contrôles hôtes, consultez la vue d’ensemble des éléments hôtes et des contrôles hôtes.
Comprendre les méthodes GetVstoObject et HasVstoObject
Pour tester un objet Office natif, utilisez les méthodes HasVstoObject et GetVstoObject dans votre projet :
Utilisez la
HasVstoObjectméthode si vous souhaitez déterminer si l’objet Office natif a un objet étendu dans votre personnalisation. Cette méthode retourne true si l’objet Office natif a un objet étendu et false dans le cas contraire.Utilisez la
GetVstoObjectméthode si vous souhaitez obtenir l’objet étendu pour un objet Office natif. Cette méthode retourne un objet ListObject, Workbook, Worksheet ou Document si l’objet Office natif spécifié en a un. Sinon,GetVstoObjectretourne null. Par exemple, laGetVstoObjectméthode retourne une Document valeur si l’objet spécifié Document est l’objet sous-jacent du document dans votre projet de document Word.Dans les projets au niveau du document, vous ne pouvez pas utiliser la méthode
GetVstoObjectpour créer un nouvel élément hôte Workbook, Worksheet, ou Document au moment de l’exécution. Vous pouvez utiliser cette méthode uniquement pour accéder aux éléments hôtes existants générés dans votre projet au moment du design. Si vous souhaitez créer des éléments hôtes au moment de l’exécution, vous devez développer un projet de complément VSTO. Pour plus d’informations, consultez Limitations programmatiques des éléments hôtes et des contrôles hôtes et Étendre les documents Word et les classeurs Excel dans les compléments VSTO au moment de l'exécution.
Utiliser les méthodes GetVstoObject et HasVstoObject
Pour appeler la méthode HasVstoObject et GetVstoObject, utilisez la méthode Globals.Factory.GetVstoObject ou Globals.Factory.HasVstoObject, puis passez l’objet natif Word ou Excel (par exemple, un Document ou Worksheet) que vous souhaitez tester.