The Wayback Machine - https://web.archive.org/web/20071013001625/http://www.codeguru.com/cpp/com-tech/activex/tutorials/article.php/c5569/

CodeGuru
Earthweb Search
Forums Wireless Jars Gamelan Developer.com
CodeGuru Navigation
Member Sign In
User ID:
Password:
Remember Me:
Forgot Password?
Not a member?
Click here for more information and to register.
PDAs
PC Notebooks
Printers
Monitors

jobs.internet.com

internet.commerce
Partners & Affiliates
Laptop Computers
Cell Phone Plans
Promote Your Website
Computer Deals
Hurricane Shutters
Mortgage Refinance
KVM Switch over IP
Promotional Items
Free Credit Score
Affiliate Programs
Cheap Plasma TVs
Dental Insurance
Managed Hosting
Promotional Gifts


RSS Feeds

RSSAll

RSSVC++/C++

RSS.NET/C#

RSSVB

See more EarthWeb Network feeds

Home >> Visual C++ / C++ >> COM-based Technologies >> ActiveX Programming >> Tutorials

Whitepaper: Applying RFID Technology in High Volume Manufacturing. The pilot tracked 80k microprocessors from the end of the manufacturing line, through warehouses, & onto the customer's factory floor.

Automating Microsoft Office Applications
Rating:

V Girish (view profile)
August 19, 2003

Environment: Tutorials, Microsoft Office

Introduction

This tutorial helps you to learn the basics of automation. With this code, you can control PowerPoint from your application. You can open PowerPoint programmatically, open any presentation, go to any slide that you want to, run the slideshow, and so forth.

Steps to Follow


(continued)



  Navigating Your IT Career
A career in information technology usually has its share of ups and downs. Download this Internet.com eBook to learn where the jobs are in IT, how to negotiate a salary, and helpful advice on job security and how to deal with a layoff. »
 
  Inside Spyware: A Guide to Finding, Removing, and Preventing Online Pests
Your organization's computers are possibly being used to send spam, harvest e-mail addresses, make purchases on stolen credit cards or take part in denial of service attacks. Learn how to indentify, avoid, and remove malware from computers and keep your network and machines safe. »
 
  Tips for Selecting Software Vendors
IT managers need a proven, steadfast process for sifting through the hundreds of choices available for each enterprise software market segment. There are a series of steps for ensuring a result that will survive the intense, long-term scrutiny this level of investment will certainly attract. »
 
  Storage Basics: A Guide to the World of Storage Technology
Regardless of industry, size, or age, businesses are awash in more data than ever before. Federal regulations require that data be stored, protected, and retrievable for a certain amount of time. Storage is also a growing area in IT, which means employment opportunities exist now, and should exist for some time. »
 
  Building Your Own IP PBX
If you're already into having control of your computing infrastructure, taking charge of your telephone network is a natural progression. Asterisk is an open source PBX that runs on Linux. It can free your organization from expensive commercial PBXs, and gives you complete control over your telephone services »
 

By following the same steps given below, you can automate Word, Excel, or any other Microsoft Office application.

  1. Create a dialog-based application and in the App Wizard's step 3 of 6, select the automation checkbox.
  2. Create buttons for Start, Run, Close, First Slide, Last Slide, Previous Slide, and Next Slide functions and use the following functions accordingly.
  3. In your application's InitInstance function, add the following lines:
  4.   // Initialize OLE libraries
      if (!AfxOleInit())
      {
        AfxMessageBox("Failed to initialize OLE");
        return FALSE;
      }
    
  5. In your dialog's class, open the class wizard, select the automation tab, select "Add Class" ... "From a type library", and then select msppt8.olb from "C:\Program Files\Microsoft Office\Office\".
  6. In your header file of your dialog, include the following line:
  7.   #include "msppt8.h"
  8. Add the following variables in your dialog's header file.
  9.   _Application app;    // app is the PowerPoint
                           // _Application object
    
      Presentations Presentations;
      _Presentation Presentation;
    
      SlideShowView View;
    
      SlideShowWindow SlideShowWindow;
      SlideShowSettings slideshow;
      Slides slides;
      _Slide slide;
    
  10. To start PowerPoint, you have to write this code in the Start button's function.
  11.   void CPowerPntDlg::OnBtnStart()
      {
        // Start PowerPoint and get Application object...
        if(!app.CreateDispatch("Powerpoint.Application"))
        {
            AfxMessageBox("Couldn't start PowerPoint.");
        }
        else    // Make PowerPoint visible and display a message
        {
            app.SetVisible(TRUE);
            TRACE("PowerPoint is Running!");
        }
      }
    
  12. To open a presentation from the hard disk, add this code in the Open button's function call.
  13.   void CPowerPntDlg::OnBtnOpen()
      {
        static char BASED_CODE szFilter[] = "PowerPoint Files
                                            (*.ppt)|*.ppt||";
        CFileDialog FileDlg(TRUE,"PPT",NULL,
                            OFN_FILEMUSTEXIST|OFN_NONETWORKBUTTON|
                            OFN_PATHMUSTEXIST,szFilter);
        FileDlg.DoModal();
    
        // To get the selected file's path and name
        CString strFileName;
        strFileName = FileDlg.GetPathName();
    
        if(!strFileName.IsEmpty())
        {
            Presentations = app.GetPresentations();
            Presentation  = Presentations.Open(strFileName,0,0,1);
        }
      }
    
  14. To close PowerPoint, add this code in the Close button's function call.
  15.   void CPowerPntDlg::OnBtnClose()
      {
        if (CanExit())
            app.Quit();
      }
    
  16. To run the slideshow, use this code in the Run button's function call
  17.   void CPowerPntDlg::OnBtnRun()
      {
        Presentations = app.GetActivePresentation();
          slides      = Presentation.GetSlides();
         // Show the first slide of the presentation
        slide         = slides.Item(COleVariant((long)1));
    
        //Run the show
        slideshow     = Presentation.GetSlideShowSettings();
        slideshow.Run();
      }
    
  18. Sometimes, you might want to start all over from the first slide. To go to the first slide, you can use this code:
  19.   void CPowerPntDlg::OnBtnFirst()
      {
        Presentation    = app.GetActivePresentation();
        SlideShowWindow = Presentation.GetSlideShowWindow();
        View            = SlideShowWindow.GetView();
        View.First();
      }
    
  20. And similarly, to go to the last slide
  21.   void CPowerPntDlg::OnBtnLast()
      {
        Presentation    = app.GetActivePresentation();
        SlideShowWindow = Presentation.GetSlideShowWindow();
        View            = SlideShowWindow.GetView();
        View.Last();
      }
    
  22. Now that you have the slideshow running, you would obviously want to go to the previous slide at some point of time. To do just that, you can use this code:
  23.   void CPowerPntDlg::OnBtnPrevious()
      {
        Presentation    = app.GetActivePresentation();
        SlideShowWindow = Presentation.GetSlideShowWindow();
        View            = SlideShowWindow.GetView();
        View.Previous();
      }
    
  24. Interested in going to the next slide now? In that case, this function will help you:
  25.   void CPowerPntDlg::OnBtnNext()
      {
        Presentation    = app.GetActivePresentation();
        SlideShowWindow = Presentation.GetSlideShowWindow();
        View            = SlideShowWindow.GetView();
        View.Next();
      }
    

Conclusion

That's it, folks. Check out the other functions available for transitions, animations, and so forth and you can go ahead on your own. This is the basic framework and you can see how easy it is to handle PowerPoint. It's the same case with Excel, Word, or any other Microsoft Office application. All luck to you and have a great time. You can also check out http://support.microsoft.com/default.aspx?scid=kb;en-us;Q178749 for more information.

I used this code to do remote PowerPoint presentations. The concept was to run a presentation at one place and the clients will be looking at it simultaneously from different places at the same time.

Tools:
Add www.codeguru.com to your favorites
Add www.codeguru.com to your browser search box
IE 7 | Firefox 2.0 | Firefox 1.5.x
Receive news via our XML/RSS feed

Whitepaper: Complete Peace of Mind--The Benefits of Verio Managed Private Servers (MPS)
Whitepaper: Verio FreeBSD Managed Private Servers (MPS) v3
Free Trial: Web-based Bug Tracking Helps Ensure Issues Get Resolved, Not Lost.
Verio Whitepaper: Managing Your Web Presence While Protecting the Hosting Resources You Pay For.
Download: SQL Anywhere Developer Edition


RATE THIS ARTICLE:   Excellent  Very Good  Average  Below Average  Poor  

(You must be signed in to rank an article. Not a member? Click here to register)

Latest Comments:
Add a command button to a slide and set it caption? - hacaonguyen (08/16/2005)
In C++ how to detect an Automatic Date in a powerpoint slide? - one_apple (03/14/2005)
I have a problem - Legacy CodeGuru (02/06/2004)
how to create an acticex control and insert it to .ppt - Legacy CodeGuru (12/02/2003)
a small question - Legacy CodeGuru (11/25/2003)

View All Comments
Add a Comment:
Title:
Comment:
Pre-Formatted: Check this if you want the text to display with the formatting as typed (good for source code)



(You must be signed in to comment on an article. Not a member? Click here to register)

Solutions