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

Traductions disponibles Traductions disponibles
Numéro d'article: 307473 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F307473
Agrandir tout | Réduire tout

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. 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, , 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"

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);
   }
} 

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.

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 :
Microsoft.public.dotnet.languages.vc
Visitez le centre de support technique de Visual C++ .NET à l'adresse suivante :
Centre de support de Visual C++ .NET (2002)

Propriétés

Numéro d'article: 307473 - Dernière mise à jour: vendredi 23 décembre 2005 - Version: 1.5
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C++ .NET 2002 Initiation
  • Microsoft Foundation Class Library 4.2
  • Microsoft Office XP Developer
  • Microsoft Office 2000 Developer
  • Microsoft Office 97 Developer
Mots-clés : 
_ik11561 kbautomation kbexcel kbhowto kbnewsgrouplink kbword KB307473
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com