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

Le support d'Office 2003 a pris fin

Microsoft a mis fin au support d'Office 2003 le 8 avril 2014. Cette modification a affecté vos mises à jour logicielles et options de sécurité. Découvrez les implications de ce changement à votre niveau et la marche à suivre pour rester protégé.

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
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
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++
Importation de IDispatch LPDISPATCH CComPtr

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 222960 - Dernière mise à jour : 12/05/2015 13:29:12 - Révision : 4.3

Microsoft Foundation Class Library 4.2, Microsoft Office PowerPoint 2003, Microsoft PowerPoint 2002 Standard, Microsoft PowerPoint 2000 Standard, Microsoft PowerPoint 97 Standard

  • kbnosurvey kbarchive kbmt kbautomation kbhowto KB222960 KbMtfr
Commentaires