使用 MS PowerPoint 加载项自动更新 OLE 对象

关于自动更新 OLE 对象

Aspose.Slides for .NET 客户最常问的问题之一是如何创建或更改可编辑图表或其他 OLE 对象,并在打开演示文稿时自动更新它们。遗憾的是,PowerPoint 不支持 Excel 和 Word 中可用的任何自动宏。唯一可用的是 Auto_Open 和 Auto_Close 宏。然而,这些宏只能从加载项中自动运行。这个简短的技术提示展示了如何实现这一点。

首先,有几个免费的加载项可以为 PowerPoint 添加 Auto_Open 宏功能,例如 AutoEvents Add-inEvent Generator

安装此类加载项后,只需将 Auto_Open() 宏(在 “Event Generator” 的情况下为 OnPresentationOpen())添加到您的模板演示文稿中,如下所示:

public void Auto_Open()
{
    Shape oShape;
    Slide oSlide;
    object oGraph;

    // 循环遍历演示文稿中的每一张幻灯片。
    foreach (var oSlide in ActivePresentation.Slides)
    {

        // 循环遍历当前幻灯片上的所有形状。
        foreach (var oShape in oSlide.Shapes)
        {

            // 检查形状是否为 OLE 对象。
            if (oShape.Type == msoEmbeddedOLEObject)
            {

                // 找到 OLE 对象;获取对象引用,然后更新。
                oObject = oShape.OLEFormat.Object;
                oObject.Application.Update();

                // 现在,退出 OLE 服务器程序。这将释放
                // 内存,并防止任何问题。同时,将 oObject 设置为
                // Nothing 以释放对象。
                oObject.Application.Quit();
                oObject = null;
            }
        }
    }
}