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.
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.
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
Inicie o Microsoft PowerPoint e crie uma nova apresentação com três diapositivos em branco.
Prima ALT+F11 para iniciar o Editor do Visual Basic.
A partir do menu Inserir , clique em módulo para inserir um módulo na nova apresentação.
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
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
Crie uma nova aplicação de caixa com base de diálogo MFC denominada AutoPPT .
A partir do menu Ver (ou prima CTRL+W), seleccionar o Assistente de classe e, em seguida, siga estes passos:
Clique no separador automatização .
Clique em Adicionar classe e clique na partir da biblioteca de tipos .
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 .
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.
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
Adicione a seguinte linha de código ao início da função CAutoPPTApp::InitInstance() .
AfxOleInit();
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.
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
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/
)
Qual foi o esforço que despendeu pessoalmente para utilizar este artigo?
Muito baixo
Baixo
Moderado
Elevado
Muito elevado
Diga-nos porquê e o que podemos fazer para melhorar estas informações
Obrigado! Os seus comentários são utilizados para ajudar-nos a melhorar o conteúdo do nosso suporte. Para obter mais opções de assistência, visite a Home Page de Ajuda e Suporte.