Comment faire pour automatiser PowerPoint à l'aide de Visual C++ 5.0 ou Visual C++ 6.0 avec The Microsoft Foundation Classes

Traductions disponibles Traductions disponibles
Numéro d'article: 222960 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

Cet article explique comment automatiser Microsoft PowerPoint en utilisant Visual C++ 5.0 ou Visual C++ 6.0 avec MFC (The Microsoft Foundation Classes).

Plus d'informations

À l'aide de l'automation dans PowerPoint, vous pouvez par programme imprimer, afficher les diapositives et effectuez la plupart des choses que vous pouvez faire interactivement. Procédez comme suit pour générer et exécuter l'exemple automation :
  1. Créez un projet MFC EXE basé sur des boîtes de dialogue.
  2. Ajouter un bouton à votre boîte de dialogue et un gestionnaire BN_CLICKED pour lui.
  3. Ouvrez ClassWizard (CTRL + W), cliquez sur l'onglet Automation, cliquez sur Ajouter une classe et sélectionnez à partir d'une bibliothèque de type.
  4. Accédez au répertoire dans lequel vous avez installé Office (par exemple, C:\Program Files\Microsoft Office\Office) et choisissez Msppt8.olb. La bibliothèque d'objet de PowerPoint pour PowerPoint 2000 est nommé Msppt9.olb. La bibliothèque d'objet de PowerPoint pour PowerPoint 2002 est msppt.olb et il se trouve, par défaut, dans le dossier c:\Program Files\Microsoft Office\Office10. La bibliothèque d'objet de PowerPoint pour Microsoft Office PowerPoint 2003 est msppt.olb et il se trouve, par défaut, dans le dossier c:\Program Files\Microsoft Office\Office11
  5. Sélectionnez toutes les classes qu'il trouve, puis cliquez sur OK pour retourner à votre projet. ClassWizard a généré certains automation "classes wrapper" à partir de la bibliothèque de type PowerPoint et créé les fichiers Msppt8.h et Msppt8.cpp.
  6. Ajoutez le code suivant à votre gestionnaire de bouton :
    // Start PowerPoint.
    _Application app;
    COleException e;
    if(!app.CreateDispatch("Powerpoint.Application", &e)) {
       CString str;
       str.Format("CreateDispatch() failed w/err 0x%08lx", e.m_sc),
       AfxMessageBox(str, MB_SETFOREGROUND);
       return;
    }
    
    // Make it visible.
    app.SetVisible(TRUE);
    
    // Get Presentations collection and add a new presentation.
    Presentations presSet(app.GetPresentations());
    _Presentation pres(presSet.Add(TRUE));
    
    // Get Slides collection and add a new slide.
    Slides slideSet(pres.GetSlides());
    _Slide slide1(slideSet.Add(1, 2));
    
    // Add text to slide, by navigating the slide as follows:
    // slide1.shapes(#).TextFrame.TextRange.Text
    {
       Shapes shapes(slide1.GetShapes());
       Shape shape(shapes.Item(COleVariant((long)1)));
       TextFrame textFrame(shape.GetTextFrame());
       TextRange textRange(textFrame.GetTextRange());
       textRange.SetText("My first slide");
    }
    {
       Shapes shapes(slide1.GetShapes());
       Shape shape(shapes.Item(COleVariant((long)2)));
       TextFrame textFrame(shape.GetTextFrame());
       TextRange textRange(textFrame.GetTextRange());
       textRange.SetText("Automating PowerPoint is easy\r\n"
          "Using Visual C++ is powerful!");
    }
    
    // Add another slide with a chart.
    _Slide slide2(slideSet.Add(2, 5));
    
    // Add text to slide as before.
    {
       Shapes shapes(slide2.GetShapes());
       Shape shape(shapes.Item(COleVariant((long)1)));
       TextFrame textFrame(shape.GetTextFrame());
       TextRange textRange(textFrame.GetTextRange());
       textRange.SetText("Slide 2's topic");
    }
    {
       Shapes shapes(slide2.GetShapes());
       Shape shape(shapes.Item(COleVariant((long)2)));
       TextFrame textFrame(shape.GetTextFrame());
       TextRange textRange(textFrame.GetTextRange());
       textRange.SetText("You can create and use charts "
          "in your PowerPoint slides!");
    }
    
    // Add a chart where the default one was created.
    {
       // First get coordinates of old chart.
       float cTop, cWidth, cHeight, cLeft;
       Shapes shapes(slide2.GetShapes());
       Shape shape(shapes.Item(COleVariant((long)3)));
       cTop = shape.GetTop();
       cWidth = shape.GetWidth();
       cHeight = shape.GetHeight();
       cLeft = shape.GetLeft();
    
       // Delete original chart.
       shape.Delete();
    
       // Now add your own back where old one was.
       Shape tmpShape(shapes.AddOLEObject(cLeft, cTop, cWidth, cHeight,
          "MSGraph.Chart", "", 0, "", 0, "", 0));
    }
    
    // Add another slide, with an Organization chart.
    _Slide slide3(slideSet.Add(3, 7));
    
    // Add text to slide as before.
    {
    
       Shapes shapes(slide3.GetShapes());
       Shape shape(shapes.Item(COleVariant((long)1)));
       TextFrame textFrame(shape.GetTextFrame());
       TextRange textRange(textFrame.GetTextRange());
       textRange.SetText("The rest is only limited by your Imagination");
    }
    // Add a chart where the default one was created.
    {
       // First get coordinates of old chart.
       float cTop, cWidth, cHeight, cLeft;
       Shapes shapes(slide3.GetShapes());
       Shape shape(shapes.Item(COleVariant((long)2)));
       cTop = shape.GetTop();
       cWidth = shape.GetWidth();
       cHeight = shape.GetHeight();
       cLeft = shape.GetLeft();
    
       // Delete original chart.
       shape.Delete();
    
       // Now add your own back where old one was.
       // The next line assumes you have the Microsoft OrgChart application
       // installed and registered on your computer.
       Shape tmpShape(shapes.AddOLEObject(cLeft, cTop, cWidth, cHeight,
          "OrgPlusWOPX.4", "", 0, "", 0, "", 0));
    }
    
    // Setup slide show properties.
    for(int i=1; i<=3; i++) {
       _Slide slide(slideSet.Item(COleVariant((long)i)));
       SlideShowTransition sst(slide.GetSlideShowTransition());
       sst.SetEntryEffect(513); // Random.
       sst.SetAdvanceOnTime(TRUE);
       sst.SetAdvanceTime(5.0); // 5-seconds per slide.
    }
    // Prepare and run a slide show.
    {
       SlideShowSettings sss(pres.GetSlideShowSettings());
       sss.SetShowType(3); // Kiosk.
       sss.SetLoopUntilStopped(TRUE);
       sss.SetRangeType(1); // Show all.
       sss.SetAdvanceMode(2); // Use slide timings.
       SlideShowWindow ssw(sss.Run()); // Run show.
    }
    
    // Sleep so user can watch slide show.
    ::Sleep(15000);
    
    // Tell PowerPoint to quit.
    app.Quit();
    					
  7. Ajoutez les lignes suivantes juste avant l'implémentation de votre gestionnaire de bouton :
    #include "msppt8.h" //msppt9.h for PowerPoint 2000, msppt.h for PowerPoint 2002 and PowerPoint 2003
    
    // Ole initialization class.
    class OleInitClass {
    public:
       OleInitClass() {
          OleInitialize(NULL);
       }
       ~OleInitClass() {
          OleUninitialize();
       }
    };
    // This global class calls OleInitialize() at
    // application startup, and calls OleUninitialize()
    // at application exit.
    OleInitClass g_OleInitClass;
    					
  8. Compilez et exécutez.

Références

Pour plus d'informations sur l'automatisation des applications Microsoft Office à partir de Visual C++, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
196776Office Automation à l'aide de Visual C++

Propriétés

Numéro d'article: 222960 - Dernière mise à jour: mercredi 24 janvier 2007 - Version: 4.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Foundation Class Library 4.2 sur le système suivant
    • Microsoft Visual C++ 5.0 Édition Standard
    • Microsoft Visual C++ 6.0 Service Pack 5
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard
  • Microsoft PowerPoint 2000 Standard
  • Microsoft PowerPoint 97 Standard
Mots-clés : 
kbmt kbautomation kbhowto KB222960 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 222960
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