项目经理要求用程序操作PPT,关键是要能更换PPT上的EXCEL。所以找了很久最后想到了JACOB调用PPT自己宏的实现方法。
但是。没有找到具体调用PPT宏的代码。。求高人指教。(用调用WORD宏的方法,对WORD可以,但是对PPT无效)

解决方案 »

  1.   

    package com.hzmt.res.test;import com.jacob.activeX.ActiveXComponent;
    import com.jacob.com.ComThread;
    import com.jacob.com.Dispatch;
    import com.jacob.com.Variant;public class WordMacroCtrl { public void callWordMacro(String filePath, String macroName) {
    ActiveXComponent wrdCom = new ActiveXComponent("PowerPoint.Application");
    // 创建 JACOB 的 ActiveXComponent对象
    wrdCom.setProperty("Visible", new Variant(true));
    // 设置 JACOB 对象中的属性
    Dispatch oDocuments = wrdCom.getProperty("Presentations").toDispatch();
    // 通过 JACOB 对象,调用自动化接口,获得 COM 组件的函数指针
    Dispatch oDocument = Dispatch.call(oDocuments, "Open", filePath).toDispatch();
    // 打开指定路径下的 WORD文件
    //Dispatch.call(wrdCom, "Run", new Variant("Normal.NewMacros." + macroName));
    Dispatch.call(wrdCom, "Run", new Variant("pptTem.ppt!模块2.auto_open"));

    //Dispatch.call(wrdCom, macroName);

    // 调用存储在Noraml.dot 中的宏代码,并在打开的 WORD文件中应用
    // http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛 5
    ComThread.Release();
    } public static void main(String[] argv) {
    WordMacroCtrl Ma = new WordMacroCtrl();
    Ma.callWordMacro("D:\\pptTem.ppt", "auto_open");
    // 调用自定义方法,传入应用宏的 WORD文件路径(已经存在的文件),以及宏名称
    }
    }
    这个可以调用
    Dispatch.call(wrdCom, "Run", new Variant("pptTem.ppt!模块2.auto_open"));
    中"pptTem.ppt!模块2.auto_open":文件名!模块名.红名