Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

PROCÉDURE : Utiliser une bibliothèque de types pour l'automatisation d'Office à partir de Visual C++ .NET

Ancien nº de publication de cet article : F307473
Résumé
Cet article explique comment créer un projet Visual C++ .NET qui agit comme un client Automation pour des applications compatibles COM (Component Object Model). L'exemple de code présenté dans cet article utilise MFC (Microsoft Foundation Classes) avec des wrappers de classes pour un composant Office.
Plus d'informations
La procédure suivante illustre comment générer un client Automation simple. Cette procédure se compose de trois étapes principales :

  1. Création d'un client Automation Ajout d'un code pour automatiser Microsoft Excel Exécution du client Automation
  2. Ajout d'un code pour automatiser Microsoft Excel Exécution du client Automation
  3. Exécution du client Automation
La première étape, Création d'un client Automation, permet de créer un nouveau client Automation indépendamment du serveur Automation que vous utilisez. La deuxième étape, Ajout d'un code pour automatiser Microsoft Excel, est spécifique au serveur Automation.

Création d'un client Automation

  1. Démarrez Microsoft Visual Studio .NET. Dans le menu Fichier, cliquez sur Nouveau, puis sur Projet. Dans les types de projets Visual C++, sélectionnez Application MFC et nommez le projet AutoProject.
  2. Lorsque l'Assistant Application MFC apparaît, cliquez sur Type d'application, définissez le type d'application sur Basée sur une boîte de dialogue, puis cliquez sur Terminer.
  3. Modifiez la boîte de dialogue IDD_AUTOPROJECT_DIALOG de la manière suivante :
    1. Supprimez le contrôle Étiquette (IDC_STATIC) ainsi que le bouton Annuler (IDCANCEL).
    2. Remplacez l'ID du bouton OK par "IDRUN" et la légende par "Exécuter".
  4. Créez des wrappers de classes à partir de la bibliothèque de types pour le serveur Automation, en procédant comme suit :
    1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur AutoProject, puis cliquez sur Ajouter une classe.
    2. Cliquez sur Classe MFC à partir d'une TypeLib, puis sur Ouvrir.
    3. Cliquez sur À partir du : Fichier, puis recherchez la bibliothèque de types appropriée pour votre serveur Automation.

      Pour cet exemple, sélectionnez Excel9.olb pour Microsoft Excel 2000 ou Excel.exe pour Microsoft Excel 2002.
    4. Dans la liste, sélectionnez la ou les interfaces dont vous avez besoin, puis cliquez sur le symbole 'supérieur à' (>) pour les ajouter à la liste des interfaces pour lesquelles MFC doit créer des wrappers. Cliquez sur Terminer, une fois toutes les interfaces ajoutées.

      Dans cet exemple, seule l'interface _Application est nécessaire.

      IMPORTANT : si la bibliothèque de types choisie contient plusieurs interfaces, sélectionnez uniquement celles que vous envisagez d'utiliser car MFC génèrera un fichier d'en-tête distinct pour chaque interface sélectionnée. En sélectionnant un nombre minimal d'interfaces, vous pouvez éviter une baisse inutile des performances lors de la création et de la compilation des fichiers.
  5. Pour charger et activer la bibliothèque des services COM pour la fonction CAutoProjectApp::InitInstance, ajoutez le code suivant :
    if(!AfxOleInit())  // L'insertion débute ici.{  AfxMessageBox("Impossible d'initialiser une dll COM");  return FALSE;  // L'insertion se termine ici.}AfxEnableControlContainer();
  6. Ajoutez une ligne include pour chaque fichier d'en-tête généré à partir des interfaces de la bibliothèque de types du serveur Automation. Vous devez ajouter ces lignes après l'instruction include pour Stdafx.h, au début de AutoProjectDlg.cpp.

    Dans cet exemple, ajoutez une ligne include pour le fichier d'en-tête CApplication.h, généré pour l'interface _Application.
          #include "stdafx.h"      #include "CApplication.h"
Retour au début

Ajout d'un code pour automatiser Microsoft Excel

Dans la boîte de dialogue IDD_AUTOPROJECT_DIALOG, cliquez avec le bouton droit sur Exécuter, puis cliquez sur Ajouter un gestionnaire d'événements dans la liste déroulante. Dans l'Assistant Gestionnaire d'événements, sélectionnez le type de message BN_CLICKED, puis cliquez sur Ajouter et modifier. Ajoutez le code suivant pour automatiser Excel dans le gestionnaire :
void CAutoProjectDlg::OnBnClickedRun(){   CApplication app;  // app est l'objet _Application d'Excel   // Démarrez Excel et récupérez l'objet Application.   if(!app.CreateDispatch("Excel.Application"))   {      AfxMessageBox("Impossible de démarrer Excel et de récupérer l'objet Application.");      return;   }   else   {      //Rendre l'application visible et donner le contrôle de       //Microsoft Excel à l'utilisateur.      app.put_Visible(TRUE);      app.put_UserControl(TRUE);   }} 
Retour au début

Exécution du client Automation

Appuyez sur la touche F5 pour créer et exécuter le client Automation. Lorsque la boîte de dialogue apparaît, cliquez sur Exécuter. Le client Automation démarre Excel et rend l'application visible. Notez que l'exécution d'Excel se poursuit même si celle du client Automation se termine, car l'utilisateur a obtenu le contrôle de l'application.

Retour au début

Remarques supplémentaires

Une fois les classes ajoutées à votre projet à partir d'une bibliothèque de types, notez qu'elles apparaissent dans l'Affichage des classes de votre projet. Dans l'Affichage des classes, vous pouvez double-cliquer sur une classe pour afficher les fonctions qu'elle contient, puis double-cliquer sur ces fonctions pour afficher leur définition dans le fichier de mise en oeuvre du wrapper MFC. Vous pouvez examiner la définition d'une fonction membre pour vérifier le type de renvoi ou pour modifier éventuellement la mise en oeuvre de la fonction.

Bien que les étapes précédentes permettent d'automatiser Microsoft Excel, vous pouvez appliquer les mêmes principes pour automatiser d'autres applications. La liste ci-dessous répertorie les fichiers correspondant aux bibliothèques de types d'autres applications Microsoft Office :
   Application                           Bibliothèque de types   --------------------------------------------------   Microsoft Access 97                   Msacc8.olb   Microsoft Jet Database 3.5            DAO350.dll   Microsoft Binder 97                   Msbdr8.olb   Microsoft Excel 97                    Excel8.olb   Microsoft Graph 97                    Graph8.olb   Microsoft Office 97                   Mso97.dll   Microsoft Outlook 97                  Msoutl97.olb   Microsoft PowerPoint 97               Msppt8.olb   Microsoft Word 97                     Msword8.olb   Microsoft Access 2000                 Msacc9.olb   Microsoft Jet Database 3.51           DAO360.dll   Microsoft Binder 2000                 Msbdr9.olb   Microsoft Excel 2000                  Excel9.olb   Microsoft Graph 2000                  Graph9.olb   Microsoft Office 2000                 Mso9.dll   Microsoft Outlook 2000                Msoutl9.olb   Microsoft PowerPoint 2000             Msppt9.olb   Microsoft Word 2000                   Msword9.olb    Microsoft Access 2002                 Msacc.olb   Microsoft Excel 2002                  Excel.exe   Microsoft Graph 2002                  Graph.exe    Microsoft Office 2002                 MSO.dll   Microsoft Outlook 2002                MSOutl.olb   Microsoft PowerPoint 2002             MSPpt.olb   Microsoft Word 2002                   MSWord.olb
REMARQUE : par défaut, ces bibliothèques de types sont incluses dans C:\Program Files\Microsoft Office\Office (pour Office 2002, le chemin est C:\...\Office10), à l'exception de Dao350.dll, Dao360.dll et MSO.dll (Microsoft Office 10). L'emplacement par défaut de Dao350.dll et Dao360.dll est C:\Program Files\Common Files\Microsoft Shared\Dao ; l'emplacement par défaut de MSO.dll est C:\Program Files\Common Files\Microsoft Shared\Office10.
Références
Pour obtenir des informations plus générales sur Visual C++ .NET, consultez le groupe de discussion Usenet suivant : Visitez le centre de support technique de Visual C++ .NET à l'adresse suivante :
IDispatch ole automation listbox
Propriétés

ID d'article : 307473 - Dernière mise à jour : 12/23/2005 21:38:15 - Révision : 1.5

Microsoft Visual C++ .NET 2002 Initiation, Microsoft Foundation Class Library 4.2, Microsoft Office XP Developer, Microsoft Office 2000 Developer, Microsoft Office 97 Developer

  • _ik11561 kbautomation kbexcel kbhowto kbnewsgrouplink kbword KB307473
Commentaires