如何通过使用 Visual c + + 5.0 或 Visual c + + 6.0 中的 Microsoft 基础类具有自动化 PowerPoint

针对 Office 2003 的支持已终止

Microsoft 已于 2014 年 4 月 8 日终止了针对 Office 2003 的支持。该更改已影响到您的软件更新和安全选项。 了解这一措施对于您的含义以及如何继续保持受保护状态。

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 222960
本文已归档。它按“原样”提供,并且不再更新。
概要
本文介绍如何通过使用 Visual c + + 5.0 或 Visual c + + 6.0 中使用的 Microsoft 基础类 (MFC) 自动完成 Microsoft PowerPoint。
更多信息
通过使用自动化在 PowerPoint 中,您可以以编程方式打印、 显示幻灯片,和执行大多数您可以以交互方式执行该操作。 请按照下列步骤以生成并运行自动化示例:
  1. 创建一个新的基于对话框的 MFC EXE 项目。
  2. 将按钮添加到您的对话框和 BN_CLICKED 处理程序中,为它。
  3. 打开 类向导 (Ctrl + W),单击 自动化 选项卡、 单击 添加类,并选择 从类型库
  4. 转到目录 (例如对于是 Files\Microsoft Office\Office) Office 的安装位置,然后选择 Msppt8.olb。PowerPoint 对象库中的 PowerPoint 2000 命名 Msppt9.olb。PowerPoint 对象库中的 PowerPoint 2002 是 Msppt.olb,它位于,通过 c:\Program Files\Microsoft Office\Office10 文件夹中的默认值。PowerPoint 对象库中的 Microsoft Office PowerPoint 2003 是 Msppt.olb,它位于,通过 c:\Program Files\Microsoft Office\Office11 文件夹中的默认值
  5. 选择查找的所有类,然后单击 确定 以回到您的项目。类向导已从 PowerPoint 类型库生成一些自动化"包装类",并创建 Msppt8.h 和 Msppt8.cpp 文件。
  6. 下面的代码添加到按钮处理程序:
    // Start PowerPoint._Application app;COleException e;if(!app.CreateDispatch("Powerpoint.Application", &e)) {   CString str;   str.Format("CreateDispatch() failed w/err 0x%08lx", e.m_sc),   AfxMessageBox(str, MB_SETFOREGROUND);   return;}// Make it visible.app.SetVisible(TRUE);// Get Presentations collection and add a new presentation.Presentations presSet(app.GetPresentations());_Presentation pres(presSet.Add(TRUE));// Get Slides collection and add a new slide.Slides slideSet(pres.GetSlides());_Slide slide1(slideSet.Add(1, 2));// Add text to slide, by navigating the slide as follows:// slide1.shapes(#).TextFrame.TextRange.Text{   Shapes shapes(slide1.GetShapes());   Shape shape(shapes.Item(COleVariant((long)1)));   TextFrame textFrame(shape.GetTextFrame());   TextRange textRange(textFrame.GetTextRange());   textRange.SetText("My first slide");}{   Shapes shapes(slide1.GetShapes());   Shape shape(shapes.Item(COleVariant((long)2)));   TextFrame textFrame(shape.GetTextFrame());   TextRange textRange(textFrame.GetTextRange());   textRange.SetText("Automating PowerPoint is easy\r\n"      "Using Visual C++ is powerful!");}// Add another slide with a chart._Slide slide2(slideSet.Add(2, 5));// Add text to slide as before.{   Shapes shapes(slide2.GetShapes());   Shape shape(shapes.Item(COleVariant((long)1)));   TextFrame textFrame(shape.GetTextFrame());   TextRange textRange(textFrame.GetTextRange());   textRange.SetText("Slide 2's topic");}{   Shapes shapes(slide2.GetShapes());   Shape shape(shapes.Item(COleVariant((long)2)));   TextFrame textFrame(shape.GetTextFrame());   TextRange textRange(textFrame.GetTextRange());   textRange.SetText("You can create and use charts "      "in your PowerPoint slides!");}// Add a chart where the default one was created.{   // First get coordinates of old chart.   float cTop, cWidth, cHeight, cLeft;   Shapes shapes(slide2.GetShapes());   Shape shape(shapes.Item(COleVariant((long)3)));   cTop = shape.GetTop();   cWidth = shape.GetWidth();   cHeight = shape.GetHeight();   cLeft = shape.GetLeft();   // Delete original chart.   shape.Delete();   // Now add your own back where old one was.   Shape tmpShape(shapes.AddOLEObject(cLeft, cTop, cWidth, cHeight,      "MSGraph.Chart", "", 0, "", 0, "", 0));}// Add another slide, with an Organization chart._Slide slide3(slideSet.Add(3, 7));// Add text to slide as before.{   Shapes shapes(slide3.GetShapes());   Shape shape(shapes.Item(COleVariant((long)1)));   TextFrame textFrame(shape.GetTextFrame());   TextRange textRange(textFrame.GetTextRange());   textRange.SetText("The rest is only limited by your Imagination");}// Add a chart where the default one was created.{   // First get coordinates of old chart.   float cTop, cWidth, cHeight, cLeft;   Shapes shapes(slide3.GetShapes());   Shape shape(shapes.Item(COleVariant((long)2)));   cTop = shape.GetTop();   cWidth = shape.GetWidth();   cHeight = shape.GetHeight();   cLeft = shape.GetLeft();   // Delete original chart.   shape.Delete();   // Now add your own back where old one was.   // The next line assumes you have the Microsoft OrgChart application   // installed and registered on your computer.   Shape tmpShape(shapes.AddOLEObject(cLeft, cTop, cWidth, cHeight,      "OrgPlusWOPX.4", "", 0, "", 0, "", 0));}// Setup slide show properties.for(int i=1; i<=3; i++) {   _Slide slide(slideSet.Item(COleVariant((long)i)));   SlideShowTransition sst(slide.GetSlideShowTransition());   sst.SetEntryEffect(513); // Random.   sst.SetAdvanceOnTime(TRUE);   sst.SetAdvanceTime(5.0); // 5-seconds per slide.}// Prepare and run a slide show.{   SlideShowSettings sss(pres.GetSlideShowSettings());   sss.SetShowType(3); // Kiosk.   sss.SetLoopUntilStopped(TRUE);   sss.SetRangeType(1); // Show all.   sss.SetAdvanceMode(2); // Use slide timings.   SlideShowWindow ssw(sss.Run()); // Run show.}// Sleep so user can watch slide show.::Sleep(15000);// Tell PowerPoint to quit.app.Quit();					
  7. 实施按钮处理程序的前面添加以下行:
    #include "msppt8.h" //msppt9.h for PowerPoint 2000, msppt.h for PowerPoint 2002 and PowerPoint 2003// Ole initialization class.class OleInitClass {public:   OleInitClass() {      OleInitialize(NULL);   }   ~OleInitClass() {      OleUninitialize();   }};// This global class calls OleInitialize() at// application startup, and calls OleUninitialize()// at application exit.OleInitClass g_OleInitClass;					
  8. 编译并运行。
参考
有关自动化从 Visual c + + 的 Microsoft Office 应用程序的其他信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
196776办公自动化使用 Visual c + +
IDispatch LPDISPATCH CComPtr 导入

警告:本文已自动翻译

属性

文章 ID:222960 - 上次审阅时间:12/05/2015 13:29:19 - 修订版本: 4.3

Microsoft Foundation Class Library 4.2, Microsoft Office PowerPoint 2003, Microsoft PowerPoint 2002 标准版, Microsoft PowerPoint 2000 标准版, Microsoft PowerPoint 97 标准版

  • kbnosurvey kbarchive kbmt kbautomation kbhowto KB222960 KbMtzh
反馈