就是那个网上流传的聪明的猪写的例子:public class Dispatch_MSWordMacro,ActiveXComponent wrdCom=new ActiveXComponent("Word.Application");
Dispatch wrdDocs=wrdCom.getProperty("Documents").toDispatch();
Dispatch wrdDoc=Dispatch.invoke(wrdDocs,"Open",Dispatch.Method,new Object[]{filePath},new int[1]).toDispatch();Dispatch.call(wrdDoc,"Macro3",parameter);
执行时系统报错:“com.jacob.com.ComFailException: Can't map name to dispid: Macro3”,为何?

解决方案 »

  1.   

    Dispatch.call(wrdDoc,"Macro3",parameter);
    这个好像没这个【Macro3】,Dispatch.call可以有
    "Open", "Close"."Table","item","Columns","add"什么的。
      

  2.   

    "Macro3"是我自己在word中写的宏,谢谢回复
      

  3.   

    我是楼主,现在有新问题了:可以调用宏了,不再出:“com.jacob.com.ComFailException: Can't map name to dispid: Macro3”错误了,可是调用宏时提示“Microsoft Visual Basic  该工程中的宏被禁止。请参阅联机帮助或主应用程序的文档来决定如何激活宏。”。我已经将word中的宏安全性级别调为低,打开word就执行宏,可还是出这个提示,为什么?
      

  4.   

    再问一下:用jacob打开一个word文件后,如何选中拷贝整个文件,就是  Ctrl+A、Ctrl+C两个功能,如何粘贴呢?就是paste,谢谢!
      

  5.   

    Dispatch document = Dispatch.call(documents,"Open","文件名称").toDispatch();
    Dispatch.call(objWord,"Run", "Macro1");//调用宏这样就可以