Partager via


Écrire du code dans les solutions Office

Il existe certains aspects de l’écriture de code dans des projets Office qui diffèrent d’autres types de projets dans Visual Studio. La plupart de ces différences sont liées à la façon dont les modèles objet Office sont exposés au code managé. D’autres différences sont liées à la conception de projets Office.

S’applique à : Les informations contenues dans cette rubrique s’appliquent aux projets de niveau document et aux projets de complément VSTO. Consultez les fonctionnalités disponibles par type d’application et de projet Office.

Code managé et programmation Office

La technologie clé qui permet de créer une solution Microsoft Office intégrée est Automation, qui fait partie de la technologie COM (Component Object Model). Automation vous permet d’utiliser du code pour créer et contrôler des objets logiciels exposés par n’importe quelle application, DLL ou contrôle ActiveX qui prend en charge les interfaces programmatiques appropriées.

Comprendre les assemblys d’interopérabilité principaux

Les applications Microsoft Office exposent une grande partie de leurs fonctionnalités à Automation. Toutefois, vous ne pouvez pas utiliser de code managé (par exemple, Visual Basic ou C#) directement pour automatiser les applications Office. Pour automatiser les applications Office à l’aide de code managé, vous devez utiliser les assemblys d’interopérabilité principaux Office (PIA). Les assemblys d’interopérabilité principaux permettent au code managé d’interagir avec le modèle objet COM des applications Office.

Chaque application Microsoft Office a une assembly PIA. Lorsque vous créez un projet Office dans Visual Studio, une référence au PIA approprié est automatiquement ajoutée au projet. Pour automatiser les fonctionnalités d’autres applications Office à partir du projet, vous devez ajouter manuellement une référence au PIA approprié. Pour plus d’informations, consultez Guide pratique pour cibler des applications Office via des assemblys d’interopérabilité principaux.

Utiliser des assembly d’interopérabilité principaux pendant la conception et pendant l'exécution

Vous devez installer et inscrire les informations d’identification personnelles Office dans le Global Assembly Cache sur votre ordinateur de développement pour effectuer la plupart des tâches de développement. Pour plus d’informations, consultez Configurer un ordinateur pour développer des solutions Office.

Les assemblys d'interopérabilité primaire Office ne sont pas requis sur les ordinateurs des utilisateurs finaux pour exécuter des solutions Office qui ciblent .NET Framework 4 ou une version ultérieure. Pour plus d’informations, consultez Conception et création de solutions Office.

Utiliser des types dans les assemblys d’interopérabilité principaux

Les PIAs Office contiennent une combinaison de types qui exposent le modèle objet des applications Office et des types d'infrastructure supplémentaires qui ne sont pas destinés à être utilisés directement par votre code. Pour obtenir une vue d’ensemble des types dans les AIP Office, consultez Vue d’ensemble des classes et interfaces dans les assemblys d’interopérabilité principaux Office.

Étant donné que les types dans les API Office correspondent aux types dans les modèles objet COM, la façon dont vous utilisez ces types est souvent différente d’autres types gérés. Par exemple, la façon dont vous appelez des méthodes qui ont des paramètres facultatifs dans un assembly d’interopérabilité principal Office dépend du langage de programmation que vous utilisez dans votre projet. Pour plus d’informations, voir les rubriques suivantes :

Modèle de programme des projets Office

Tous les projets Office incluent une ou plusieurs classes générées qui fournissent le point d’entrée de votre code. Ces classes fournissent également l’accès au modèle objet de l’application hôte et l’accès aux fonctionnalités telles que les volets Actions et les volets Office personnalisés.

Comprendre les classes générées

Dans les projets au niveau du document pour Excel et Word, la classe générée ressemble à un objet de niveau supérieur dans le modèle objet de l’application. Par exemple, la classe générée ThisDocument dans un projet de document Word fournit les mêmes membres que la Document classe dans le modèle objet Word. Pour plus d’informations sur les classes générées dans les projets au niveau du document, consultez Les personnalisations au niveau du document du programme.

Les projets de complément VSTO fournissent une classe générée appelée ThisAddIn. Cette classe ne ressemble pas à une classe dans le modèle objet de l’application hôte. Au lieu de cela, cette classe représente le complément VSTO lui-même et fournit des membres que vous pouvez utiliser pour accéder au modèle objet de l’application hôte et accéder à d’autres fonctionnalités disponibles pour les compléments VSTO. Pour plus d’informations, consultez Programmez des compléments VSTO.

Toutes les classes générées dans les projets Office incluent Startup et Shutdown les gestionnaires d’événements. Pour commencer à écrire du code, vous ajoutez généralement du code à ces gestionnaires d’événements. Pour initialiser votre complément VSTO, vous pouvez ajouter du code au gestionnaire d’événements Startup . Pour nettoyer les ressources utilisées par votre complément VSTO, vous pouvez ajouter du Shutdown code au gestionnaire d’événements. Pour plus d’informations, consultez Événements dans les projets Office.

Accéder aux classes générées au moment de l’exécution

Lorsqu’une solution Office est chargée, Visual Studio Tools pour Office instancie chacune des classes générées dans votre projet. Vous pouvez accéder à ces objets à partir de n’importe quel code de votre projet à l’aide de la Globals classe. Par exemple, vous pouvez utiliser la classe Globals pour appeler du code dans la classe ThisAddIn à partir d’un gestionnaire d’événements d’un bouton du Ruban dans un complément VSTO.

Pour plus d’informations, consultez l’accès global aux objets dans les projets Office.

Considérations relatives à l’espace de noms dans les solutions Office

Vous ne pouvez pas modifier l’espace de noms par défaut (ou l’espace de noms racine en Visual Basic) d’un projet Office après avoir créé le projet. L’espace de noms par défaut correspond toujours au nom du projet que vous avez spécifié lors de la création du projet. Si vous renommez votre projet, l’espace de noms par défaut ne change pas. Pour plus d’informations sur l’espace de noms par défaut dans les projets, consultez Page Application, Concepteur de projets (C#) et Page Application, Concepteur de projets (Visual Basic).

Modifier l’espace de noms des classes d’éléments hôtes dans les projets C#

Les classes d'éléments hôtes (par exemple, les classes ThisAddIn, ThisWorkbook ou ThisDocument) ont leurs propres espaces de noms dans les projets Visual C# Office. Par défaut, l’espace de noms pour les éléments hôtes de votre projet correspond au nom de projet que vous avez spécifié lors de la création du projet.

Pour modifier l’espace de noms des éléments hôtes dans un projet Office Visual C#, utilisez la propriété Espace de noms pour l’élément hôte . Pour plus d’informations, consultez Propriétés dans les projets Office.

Langages de programmation pris en charge dans les projets Office

Les modèles de projet Office dans Visual Studio prennent uniquement en charge les langages de programmation Visual Basic et Visual C#. Par conséquent, ces modèles de projet sont disponibles uniquement sous les nœuds Visual Basic et Visual C# de la boîte de dialogue Nouveau projet dans Visual Studio. Pour plus d’informations, consultez Guide pratique pour créer des projets Office dans Visual Studio.

Choix du langage et programmation Office

Microsoft Office et Visual Basic pour Applications (VBA) ont été développés pour travailler ensemble pour optimiser le flux de travail de personnalisation des applications. Visual Basic a hérité de certains de ces développements. Par exemple, Visual Basic prend en charge les paramètres facultatifs, ce qui signifie que vous pouvez écrire moins de code lors de l’appel de certaines méthodes dans les assemblys d’interopérabilité principal Microsoft Office que lorsque vous utilisez Visual C#.

Programme avec Visual Basic et Visual C# dans les solutions Office

Vous pouvez créer des solutions Office à l’aide de Visual Basic ou Visual C#. Étant donné que les modèles objet Microsoft Office ont été conçus pour être utilisés avec Microsoft Visual Basic pour Applications (VBA), les développeurs Visual Basic peuvent travailler confortablement avec les objets exposés par les applications Microsoft Office. Les développeurs Visual C# peuvent utiliser la plupart des mêmes fonctionnalités que les développeurs Visual Basic, mais il existe certains cas où ils doivent écrire du code supplémentaire pour utiliser les modèles objet Office. Il existe également des différences entre les fonctionnalités de programmation de base dans le développement Office et le code managé écrit en Visual Basic et en C#.

Principales différences entre Visual Basic et Visual C#

Le tableau suivant présente les principales différences entre Visual Basic et Visual C# dans le développement Office.

Caractéristique Descriptif Prise en charge dans Visual Basic Prise en charge de Visual C#
Paramètres facultatifs De nombreuses méthodes Microsoft Office ont des paramètres qui ne sont pas requis lorsque vous appelez la méthode. Si aucune valeur n’est passée pour le paramètre, une valeur par défaut est utilisée. Visual Basic prend en charge les paramètres facultatifs. Visual C# prend en charge les paramètres facultatifs dans la plupart des cas. Pour plus d’informations, consultez Paramètres facultatifs dans les solutions Office.
Passage de paramètres par référence Les paramètres facultatifs dans la plupart des assemblies d'interopérabilité principales de Microsoft Office peuvent être passés par valeur. Toutefois, dans certains assemblys d’interopérabilité principaux, les paramètres facultatifs qui acceptent les types de référence doivent être passés par référence.

Pour plus d’informations sur les paramètres de type valeur et référence, consultez Les arguments Pass par valeur et par référence (Visual Basic) (pour Visual Basic) et Les paramètres Pass (Guide de programmation C#).
Aucun travail supplémentaire n’est nécessaire pour passer des paramètres par référence. Le compilateur Visual Basic transmet automatiquement les paramètres par référence si nécessaire. Dans la plupart des cas, le compilateur Visual C# transmet automatiquement les paramètres par référence si nécessaire. Pour plus d’informations, consultez Paramètres facultatifs dans les solutions Office.
Propriétés paramétrables Certaines propriétés acceptent des paramètres et agissent en tant que fonctions en lecture seule. Visual Basic prend en charge les propriétés qui acceptent les paramètres. Visual C# prend en charge les propriétés qui acceptent les paramètres.
Liaison tardive La liaison tardive implique de déterminer les propriétés des objets au moment de l’exécution, au lieu de passer des variables au type d’objet au moment du design. Visual Basic effectue une liaison tardive lorsque l’option Strict est désactivée. Lorsque l’option Strict est activée, vous devez convertir explicitement des objets et utiliser des types dans le System.Reflection namespace pour accéder aux membres à liaison tardive. Pour plus d’informations, consultez Liaison dynamique dans les solutions Office. Visual C# effectue une liaison tardive dans les projets qui ciblent .NET Framework 4. Pour plus d’informations, consultez Liaison dynamique dans les solutions Office.

Principales différences entre le développement Office et le code managé

Le tableau suivant présente les principales différences entre le développement Office et le code managé écrit en Visual Basic ou Visual C#.

Caractéristique Descriptif Prise en charge de Visual Basic et Visual C#
Indices de tableau La limite inférieure des regroupements dans les applications Microsoft Office commence par 1. Visual Basic et Visual C# utilisent des tableaux à base zéro. Pour plus d’informations, consultez tableau (guide de programmation C#) et Tableaux en Visual Basic. Pour accéder au premier élément d’une collection dans le modèle objet d’une application Microsoft Office, utilisez l’index 1 au lieu de 0.