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 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.
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
Inicie o Microsoft PowerPoint e crie uma nova apresentação com três slides em branco.
Pressione ALT+F11 para iniciar o Editor do Visual Basic.
No menu Inserir , clique em módulo para inserir um módulo na nova apresentação.
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
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
Crie uma nova MFC diálogo caixa com base no aplicativo chamada AutoPPT .
No menu Exibir (ou pressione CTRL+W), selecione o Assistente de classe e, em seguida, execute as seguintes etapas:
Clique na guia automação .
Clique em Add Class e clique em De biblioteca de tipos .
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 .
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.
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
Adicione a linha de código a seguir ao início da função CAutoPPTApp::InitInstance() .
AfxOleInit();
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.
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
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/
)
Quanto esforço foi necessário para seguir os procedimentos deste artigo?
Muito baixo
Baixo
Moderado
Alto
Muito alto
Diga-nos o porque e o que podemos fazer para melhorar esta informação
Obrigado! Seus comentários são usados para nos ajudar a aperfeiçoar o conteúdo de suporte. Para obter mais opções de ajuda, visite a Home Page de Ajuda e Suporte.