Automating MS-Office Applications

Posted UsherYue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Automating MS-Office Applications相关的知识,希望对你有一定的参考价值。

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 etc.

Steps to follow

By following the same steps given below, you can automate , word, excel or any Microsoft office application.

// Initialize OLE libraries
if (!AfxOleInit())

    AfxMessageBox("Failed to initialize OLE");
    return FALSE;
#include "msppt8.h"
_Application app; // app is the PowerPoint _Application object

Presentations Presentations;
_Presentation Presentation;

SlideShowView View;

SlideShowWindow SlideShowWindow;
SlideShowSettings slideshow;
Slides slides; 
_Slide slide;
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!");
    
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);
    
void CPowerPntDlg::OnBtnClose() 

    if (CanExit())
        app.Quit();
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();
void CPowerPntDlg::OnBtnFirst() 

    Presentation = app.GetActivePresentation();
    SlideShowWindow = Presentation.GetSlideShowWindow();
    View = SlideShowWindow.GetView();
    View.First();
void CPowerPntDlg::OnBtnLast() 

    Presentation = app.GetActivePresentation();
    SlideShowWindow = Presentation.GetSlideShowWindow();
    View = SlideShowWindow.GetView();
    View.Last();
void CPowerPntDlg::OnBtnPrevious() 

    Presentation = app.GetActivePresentation();
    SlideShowWindow = Presentation.GetSlideShowWindow();
    View = SlideShowWindow.GetView();
    View.Previous();
  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. In your dialog's class , open class-wizard , select the automation tab, select "Add Class" ... "From a type library" and select msppt8.olb from "C:\\Program Files\\Microsoft Office\\Office\\"
  5. In your header file of your dialog, include the following line.
  6. Add the following variables in your dialog's header file.
  7. To start PowerPoint, you have to write this code in the Start button's function.
  8. To open a presentation from the hard disk, add this code in the Open button's function call.
  9. To close PowerPoint add this code in the Close button's function call.
  10. To run the slideshow use this code in the Run button's function call
  11. Sometimes, you might want to start all over from the first slide. To go to the first slide you can use this code.
  12. And similarly, to go to the last slide
  13. 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.
  14. Interested to go to the next slide now ? In that case, this function will help you.
    void CPowerPntDlg::OnBtnNext() 
    
        Presentation = app.GetActivePresentation();
        SlideShowWindow = Presentation.GetSlideShowWindow();
        View = SlideShowWindow.GetView();
        View.Next();
    

以上是关于Automating MS-Office Applications的主要内容,如果未能解决你的问题,请参考以下文章

使用office tool plus安装MS-Office365三件套

Automating mobile web apps

Automating mobile gestures

Automating hybrid apps

Lab_7_Automating_v2.5

Ubuntu完美运行MS-Office