Artigo: 237554 - Última revisão: quinta-feira, 24 de Maio de 2007 - Revisão: 5.1

Como automatizar o PowerPoint utilizando o Microsoft Foundation Classes em Visual C++ 5.0 e no Visual C++ 6.0

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Reduzir tudo

Sumário

Este artigo descreve como automatizar o Microsoft PowerPoint utilizando o Microsoft Foundation Classes (MFC) no Microsoft Visual C++ 5.0 e no Visual C++ 6.0.

Pode utilizar o Microsoft Foundation Classes para automatizar o PowerPoint e para executar uma macro contida numa apresentação.

Mais Informação

Normalmente, é possível utilizar o Assistente de classe para moldar todas as funções na biblioteca de tipos. No entanto, o Assistente de classe não moldar uma função que requer um argumento é do tipo SEGURA e irá gerar uma mensagem como o seguinte no ficheiro de cabeçalho.
  // method 'MyMethod' not emitted because of invalid return type or    parameter type
				
quando utiliza o Assistente de classe para gerar o wrapper não irão ser moldadas classes para o Microsoft PowerPoint, a função Application::Run porque demora um argumento do escreva SEGURA. Ainda é possível chamar Application::Run utilizando a função InvokeHelper com DISPID de 0x7e6. Para obter detalhes sobre a função Executar , pode inspeccionar a biblioteca de tipo de PowerPoint com a ferramenta OLE/COM o visualizador.

Os seguintes passos ilustram como pode automatizar o PowerPoint para chamar Application::Run e executar um PowerPoint macro.

Passos para criar a apresentação do PowerPoint com macros

  1. Inicie o Microsoft PowerPoint e crie uma nova apresentação com três diapositivos em branco.
  2. Prima ALT+F11 para iniciar o Editor do Visual Basic.
  3. A partir do menu Inserir , clique em módulo para inserir um módulo na nova apresentação.
  4. Adicione o seguinte código ao módulo.
       Sub ChangeBackColor()  'Change backcolor of slides 1, 2 and 3
        With ActivePresentation.Slides.Range(Array(1, 2, 3))
            .FollowMasterBackground = msoFalse
            .Background.Fill.ForeColor.SchemeColor = ppAccent2
        End With
       End Sub
    
       Sub ChangeText(vArray As Variant)
        'Add a text box to each slide and use the text from the
        'array passed into this procedure
        Dim s As Slide
        For i = 1 To ActivePresentation.Slides.Count
            With ActivePresentation.Slides(i).Shapes.AddTextbox( _
                            msoTextOrientationHorizontal, 186#, 54#, 336#, 36#)
                .TextFrame.TextRange.Text = vArray(i - 1)
                .TextFrame.TextRange.Font.Size = 60
            End With
        Next
       End Sub
    						
  5. Guarde a apresentação como um do seguinte e, em seguida, feche o PowerPoint:
    • No PowerPoint 2007, guarde a apresentação como uma apresentação activado por macros (*.pptm) utilizando um nome de ficheiro como, por exemplo, C:\Pres.pptm.
    • No PowerPoint 2003 e em versões anteriores do PowerPoint, guarde a apresentação como uma apresentação (* .ppt) utilizando um nome de ficheiro como, por exemplo, C:\Pres.ppt.

Passos para criar a aplicação MFC

  1. Crie uma nova aplicação de caixa com base de diálogo MFC denominada AutoPPT .
  2. A partir do menu Ver (ou prima CTRL+W), seleccionar o Assistente de classe e, em seguida, siga estes passos:
    1. Clique no separador automatização .
    2. Clique em Adicionar classe e clique na partir da biblioteca de tipos .
    3. Localizar a biblioteca do PowerPoint e adicione a biblioteca de tipos PowerPoint:
      • Para o PowerPoint 2007, adicione Msppt.olb .
      • Para o PowerPoint 2003, adicione Msppt.olb .
      • Para o PowerPoint 2002, adicione Msppt.olb .
      • Para o PowerPoint 2000, adicione Msppt9.olb .
      • Para o PowerPoint 97, adicione Msppt8.olb .
  3. Seleccione a caixa de diálogo com o recurso IDD_AUTOPPT_DIALOG ID. Adicione um botão à caixa de diálogo e, em seguida, adicione o seguinte código ao processador para esse botão.
       _Application	oApp;
       if(!oApp.CreateDispatch("Powerpoint.Application"))
       {
            AfxMessageBox("Could not get Powerpoint application.");
            return;
       }
       oApp.SetVisible(TRUE);
    
    
       //Get the Presentations collection and open a presentation
       Presentations oPresSet(oApp.GetPresentations());
       CString strFilename;
       //For PowerPoint 2007, change the file name to "c:\\pres.pptm"
       strFilename = "c:\\pres.ppt";
       _Presentation oPres(oPresSet.Open(strFilename, // Filename
                                         true,        // Readonly
                                         false,       // Untitled
                                         true         // WithWindow
                          ));
    		
       //*************** How to Run PowerPoint Macros *********************
    
       // Run "ChangeBackColor" macro in the presentation -- note that the
       // "ChangeBackColor" macro requires no arguments
    
       {
           COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
           static BYTE parms[] = 
                VTS_BSTR  VTS_VARIANT;
           LPCTSTR lpszMacroName = "Pres.ppt!ChangeBackColor";
    
           oApp.InvokeHelper(0x7e6, DISPATCH_METHOD, VT_EMPTY, NULL,  parms,
                             lpszMacroName, //Macro Name
                             &vOpt          //No arguments, for example, ignore
                            );
       }
    			
    
       // Run "ChangeText" macro in the presentation;
       // The macro requires three arguments -- the first two are strings
       // and the last one is a long	
    		
       {
    
            COleSafeArray saArgs;  //Create a 1-dimensional array with three 
                                   //elements
    
            DWORD numElements[1];
            numElements[0]= 3;	
            saArgs.Create(VT_VARIANT, 1, numElements);	
            long index[1];
            VARIANT v;
    
            index[0]=0;		//Fill 1st element
            CString sName("ABC");
            VariantInit(&v);
            v.vt= VT_BSTR;
            v.bstrVal = sName.AllocSysString();
            saArgs.PutElement(index, &v);
            SysFreeString(v.bstrVal);
            VariantClear(&v);
    
            index[0]=1;		//Fill 2nd element
            CString sCompany("XYZ");
            VariantInit(&v);
            v.vt= VT_BSTR;
            v.bstrVal = sCompany.AllocSysString();
            saArgs.PutElement(index, &v);
            SysFreeString(v.bstrVal);
            VariantClear(&v);
    
            index[0]=2;		//Fill 3rd element
            VariantInit(&v);
            v.vt = VT_I4;
            v.lVal=123;
            saArgs.PutElement(index, &v);
            VariantClear(&v);
    
            static BYTE parms[] = 
                 VTS_BSTR  VTS_VARIANT;
            LPCTSTR lpszMacroName = "Pres.ppt!ChangeText";
            oApp.InvokeHelper(0x7e6, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
                              lpszMacroName,   //Macro Name
                              (VARIANT*)saArgs //Array of macro parameters 
                             );
    
            saArgs.Detach();
       }
    
    						
    Nota se moldado as classes na biblioteca de tipos PowerPoint 2002, adicione um argumento adicional (FALSO) para a chamada para o método Open.
  4. Adicionar a instrução include para o PowerPoint ficheiro de cabeçalho.
    #include "msppt8.h" // use msppt9.h for 2000 or msppt.h for 2002, 2003, and 2007
    					
  5. Adicione a seguinte linha de código ao início da função CAutoPPTApp::InitInstance() .
         AfxOleInit();
    						
  6. Compilar e executar. Seleccione o botão que adicionou à caixa de diálogo para executar o código de automatização. Uma vez concluído o código, PowerPoint permanecerá visível, isso poderá observar as alterações à apresentação efectuadas pelas macros.

Referências

Para mais informações sobre como automatizar o PowerPoint utilizando o Visual C++, consulte o seguinte artigo na base de dados de conhecimento da Microsoft:
180616  (http://support.microsoft.com/kb/180616/ ) Como utilizar MFC para criar e mostrar uma apresentação do PowerPoint

A informação contida neste artigo aplica-se a:
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Foundation Class Library 4.2
Palavras-chave: 
kbmt kbexpertiseinter kbautomation kbhowto KB237554 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 237554  (http://support.microsoft.com/kb/237554/en-us/ )