jacob 中调用vba 命令put 与invoke 关系

  • Post author:
  • Post category:其他


用于访问COM/DLL对象的方法,读取、修改COM/DLL对象的属性。


  • call method

    :属于Dispatch类。用于访问COM/DLL对象的方法。方法进行了重载,方便不同场合调用。返回一个Variant类型的值。

  • callSub method:

    使用方法和call一样,不过它不返回值。

  • get method

    :读取COM对象的属性值,返回一个Variant类型值。

  • put method

    :设置COM对象的属性值。

  • invoke method

    :call的另一种用法,更复杂一些。

  • invokesub method:

    subcall的另一种用法

  • getProperty method

    :属于ActiveXComponent类,读取属性值,返回一个Variant类型值。


setProperty method

:属于ActiveXComponent类,设置属性值。

jacob 中调用vba 命令put 与invoke 关系

put 方法主要用于设置属性值:

如设字体

Dispatch.put(font, “Name”,new Variant(“宋体”));

Dispatch.put(font, “Size”,new Variant(20));

 设置替换文本
Dispatch.put(this.selection, "Text", "替换内容");

可以等价于invoke如:

invoke(font,  "Name", Dispatch.Put, new Object[]{"宋体"}, new int[1]);

invoke(font, “Size”, Dispatch.Put, new Object[]{new Variant(20)}, new int[1]);

invoke(selection, “Text”, Dispatch.Put, new Object[]{new Variant(“替换内容”)}, new int[1]);

另一方面invoke 可以比put 方法多设置参数,对于Dispatch.get(Dispatch dispatchTarget, String name) 返回Variant,类型非VariantDispatch如boolean,double 等类型;这种情形下,结果不能转换Dispatch也就不能使用Dispatch.put 方法来设置属性值;这是可以使用invoke 方法;如

Dispatch.call(document, "Compatibility",new Variant(4)) 返回boolean值,不能对结果进一步设置值;这时可以使用invoke 方法来处理:Dispatch.invoke(document, "Compatibility",Dispatch.Put, new Object[]{new Variant(4),new Variant(true)}, new int[1]);



版权声明:本文为shufusheng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。