ID do artigo: 237554 - Última revisão: quinta-feira, 24 de maio de 2007 - Revisão: 5.1

Como automatizar o PowerPoint usando o Microsoft Foundation Classes no 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 | Recolher tudo

Sumário

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

Você pode usar o Microsoft Foundation Classes para automatizar o PowerPoint e para executar uma macro que está contida em uma apresentação.

Mais Informações

Normalmente, você pode usar o Assistente de classe para encapsular todas as funções em uma biblioteca de tipos. Entretanto, o Assistente de classe é não é possível quebrar uma função que requer um argumento é tipo SAFEARRAY e irá gerar uma mensagem semelhante ao seguinte no arquivo de cabeçalho.
  // method 'MyMethod' not emitted because of invalid return type or    parameter type
				
quando você usar o Assistente de classe para gerar o wrapper classes para o Microsoft PowerPoint, a função Application::Run não serão ser empacotados porque ele leva um argumento de digite SAFEARRAY. Você ainda poderá chamar Application::Run usando a função InvokeHelper com DISPID de 0x7e6. Para obter detalhes sobre a função Executar , você pode inspecionar a biblioteca de tipo do PowerPoint com a ferramenta OLE/COM visualizar.

As etapas a seguir ilustram como você pode automatizar o PowerPoint para chamar Application::Run e executar um PowerPoint macro.

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

  1. Inicie o Microsoft PowerPoint e crie uma nova apresentação com três slides em branco.
  2. Pressione ALT+F11 para iniciar o Editor do Visual Basic.
  3. No menu Inserir , clique em módulo para inserir um módulo na nova apresentação.
  4. Adicione o seguinte código para o 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. Salve a apresentação como um dos PowerPoint seguinte e, em seguida, fechar:
    • No PowerPoint 2007, salve a apresentação como uma apresentação habilitado para macro (*.pptm) usando um nome de arquivo, como C:\Pres.pptm.
    • No PowerPoint 2003 e em versões anteriores do PowerPoint, salve a apresentação como uma apresentação (* .ppt) usando um nome de arquivo, como C:\Pres.ppt.

Etapas para criar o aplicativo MFC

  1. Crie uma nova MFC diálogo caixa com base no aplicativo chamada AutoPPT .
  2. No menu Exibir (ou pressione CTRL+W), selecione o Assistente de classe e, em seguida, execute as seguintes etapas:
    1. Clique na guia automação .
    2. Clique em Add Class e clique em De biblioteca de tipos .
    3. Localizar a biblioteca do PowerPoint e, em seguida, Adicionar biblioteca de tipos do 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. Selecione a caixa de diálogo com o recurso ID IDD_AUTOPPT_DIALOG. Adicione um botão para a caixa de diálogo e, em seguida, adicione o código a seguir ao manipulador 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();
       }
    
    						
    Observação se disposto as classes na biblioteca de tipos PowerPoint 2002, adicionar um argumento adicional (false) para a chamada para o método Open.
  4. Adicionar a instrução include para o PowerPoint arquivo de cabeçalho.
    #include "msppt8.h" // use msppt9.h for 2000 or msppt.h for 2002, 2003, and 2007
    					
  5. Adicione a linha de código a seguir ao início da função CAutoPPTApp::InitInstance() .
         AfxOleInit();
    						
  6. Compilar e executar. Selecione o botão adicionado à caixa diálogo para executar o código de automação. Depois que o código for concluído, PowerPoint permanecerá visível para que você pode observar as alterações à apresentação feitas pelas macros.

Referências

Para obter mais informações sobre como automatizar o PowerPoint usando o Visual C++, consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
180616  (http://support.microsoft.com/kb/180616/ ) Como usar 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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/ )