Utilisation de Visual C++ pour automatiser Office

Résumé

Vous pouvez utiliser Automation pour contrôler les composants Microsoft Office depuis vos applications Visual C++. Cet article fournit les informations de base nécessaires à l'automatisation de Microsoft Office, ainsi que des pointeurs vers des ressources et un exemple de code.

Plus d'informations

Automation (anciennement OLE Automation) est une technologie qui vous permet de tirer parti d'une fonctionnalité existante du programme et de l'incorporer à vos propres applications. Par exemple, vous pouvez utiliser les capacités du vérificateur d'orthographe et de grammaire Microsoft Word dans votre application sans que Microsoft Word soit visible pour les utilisateurs. Vous pouvez même utiliser tous les outils d'analyse de données, d'impression et de graphique de Microsoft Excel. Cette technologie peut considérablement simplifier et accélérer votre développement.

Automation et COM

Automation est basé sur le composant COM (Component Object Model). COM est une architecture logicielle standard basée sur des interfaces, et conçue pour séparer le code en objets autonomes. Pensez-y comme à une extension du paradigme de la programmation orientée objet, mais applicable à des applications distinctes. Chaque objet expose un ensemble d'interfaces, et toute communication vers un objet, telle qu'une initialisation, des notifications et un transfert de données, s'effectue par ces interfaces.

COM est également un ensemble de services fourni par des bibliothèques de liens dynamiques (DLL, Dynamic-Link Libraries) installées avec le système d'exploitation. Automation utilise un grand nombre de ses services. Le service "Marshalling" en est un exemple. Il crée un package des appels de l'application client vers les fonctions membres des interfaces de l'application serveur, et les transmet avec leurs arguments vers l'application serveur. Les interfaces du serveur semblent être exposées dans l'espace mémoire du client, ce qui n'est pas le cas lorsque le client est un fichier .exe qui s'exécute dans son propre espace de traitement. Le service Marshalling fournit en toute sécurité au client appelant les valeurs retournées par les méthodes du serveur à travers les frontières du processus.

De nombreux autres services essentiels à Automation sont fournis pas les diverses bibliothèques COM. Parmi les sources d'information figurent :
  • Inside OLE - Second Edition", Kraig Brockschmidt, ISBN 1-55615-843-2 (en anglais)
  • Inside COM", Dale Rogerson - ISBN 1-57231-349-8 (en anglais)
  • Automation Programmer's Reference," ISBN 1-57231-584-9 (en anglais)

Trois façons d'utiliser Automation à partir de Visual C++

Il existe trois façons principales d'utiliser Automation : MFC, #import et C/C++ :
  • Avec MFC, utilisez Visual C++ ClassWizard pour générer des "classes wrapper " à partir des bibliothèques de types Microsoft Office. Ces classes, ainsi que d'autres classes MFC, telles que COleVariant, COleSafeArray et COleException, simplifient les tâches d'Automation. Cette méthode est généralement préférée aux autres, et la plupart des exemples de la Base de connaissances Microsoft utilisent MFC.
  • #import, une nouvelle directive qui est devenue disponible avec Visual C++ 5.0, crée des "pointeurs intelligents" VC++ à partir d'une bibliothèque de types spécifiée. Elle est très puissante, mais rarement conseillée en raison de problèmes de comptage des références qui se produisent généralement lorsqu'elle est utilisée avec les applications Microsoft Office.
  • L'automation C/C++ est bien plus difficile, mais parfois nécessaire pour éviter une surcharge avec MFC ou des problèmes avec #import. Vous travaillerez essentiellement avec des API telles que CoCreateInstance(), et des interfaces COM telles que IDispatch et IUnknown.
Il est important de noter qu'il existe de légères différences entre l'automation à partir de C++ et C brut, car COM a été conçu autour de la classe C++. Pour plus d'informations sur l'automatisation avec C, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.

181473 Comment faire pour utiliser l'automatisation OLE à partir d'une application C plutôt que C++

Comment faire pour utiliser les bibliothèques de types Office

Une bibliothèque de types est similaire à un fichier d'en-tête C/C++. Elle contient les interfaces, méthodes et propriétés qu'un serveur publie. Vous pouvez afficher la bibliothèque de types avec l'Explorateur d'objets OLE/COM (Oleview.exe) fourni avec Visual C++. Vous trouverez ci-dessous la liste des noms de fichiers de bibliothèques de types pour Microsoft Office 95, Microsoft Office 97, Microsoft Office 2000, Microsoft Office XP, Microsoft Office 2003 et Microsoft Office 2007.
Application Office :Bibliothèque de types :
Word 95 et version antérieurewb70en32.tlb
Excel 95 et version antérieurexl5en32.olb
PowerPoint 95 et version antérieurePowerPoint.tlb
Access 95 et version antérieuremsaccess.tlb
Binder 95binder.tlb
Schedule+sp7en32.olb
Projectpj4en32.olb
Team Managermstmgr1.olb
Word 97msword8.olb
Excel 97excel8.olb
PowerPoint 97msppt8.olb
Access 97msacc8.olb
Binder 97msbdr8.olb
Graph 97graph8.olb
Outlook 97msoutl8.olb
Outlook 98msoutl85.olb
Word 2000msword8.olb
Excel 2000excel9.olb
PowerPoint 2000msppt9.olb
Access 2000msacc9.olb
Outlook 2000msoutl9.olb
Word 2002msword.olb
Excel 2002excel.olb
PowerPoint 2002msppt.olb
Access 2002msacc.olb
Outlook 2002msoutl.olb
Office Word 2003msword.olb
Office Excel 2003excel.exe
Office PowerPoint 2003msppt.olb
Office Access 2003msacc.olb
Office Outlook 2003msoutl.olb
Office Word 2007msword.olb
Office Excel 2007excel.exe
Office PowerPoint 2007msppt.olb
Office Access 2007msacc.olb
Office Outlook 2007msoutl.olb
Les bibliothèques de types fournissent les informations relatives aux objets, méthodes et propriétés dont vous avez besoin. La meilleure manière d'apprendre à naviguer dans les modèles d'objets Word, Excel et PowerPoint consiste à utiliser l'enregistreur de macro dans ces applications Office :

Pour cela, procédez comme suit dans les programmes Office 2007 :
  1. Affichez l'onglet Développeur . Pour cela, cliquez sur le bouton Microsoft Office, sur Options programme, sur Populaire, activez la case à cocher Afficher l'onglet Développeur dans le ruban, puis cliquez sur OK.
  2. Cliquez sur l'onglet Développeur.
  3. Dans le groupe Code, cliquez sur Enregistrer la macro, puis effectuez la tâche qui vous intéresse.
  4. Dans le groupe Code, cliquez sur Arrêter l'enregistrement.
  5. Une fois l'enregistrement terminé, cliquez sur Macros dans le groupe Code, cliquez sur la macro que vous avez enregistrée, puis sur Modifier.
Pour faire de même dans les programmes Office 2003 et versions antérieures, procédez comme suit :
  1. Dans le menu Outils, pointez sur Macro, cliquez sur Enregistrer une nouvelle macro, puis effectuez la tâche qui vous intéresse.
  2. Dans le menu Outils, pointez sur Macro, puis cliquez sur Arrêter l'enregistrement.
  3. Une fois l'enregistrement terminé, pointez sur Macro dans le menu Outils, cliquez sur Macros, sur la macro que vous avez enregistrée, puis sur Modifier.
Vous êtes renvoyé au code VBA généré qui accomplit la tâche que vous avez enregistrée. Gardez à l'esprit que la macro enregistrée ne sera pas le meilleur code possible dans la plupart des cas, mais elle fournit un exemple rapide et qui peut être utilisé.

Automatisation d'un composant Office incorporé

Pour automatiser un objet ou une application Office incorporé, vous devez obtenir le pointeur IDispatch de l'objet. Il est disponible dans la note technique Visual C++ n°39 (TN039). Vous trouverez cette note technique dans la Bibliothèque MFC (Microsoft Foundation Class) de la référence Visual C++. Pour obtenir un exemple pas à pas, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
184663 Comment faire pour incorporer et automatiser une feuille de calcul Microsoft Excel avec MFC

Références

Le chapitre 24 de la parution de David Kruglinski, "Inside Visual C++" (ISBN :1-57231-565- 2) fournit une présentation générale tout en donnant quelques bons exemples. De même, la Base de connaissances Microsoft constitue une bonne source d'informations.


Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.

152023 Recherche de ressources sur l'étude de l'automation

Propriétés

ID d'article : 238972 - Dernière mise à jour : 31 oct. 2008 - Révision : 1

Commentaires