有人可以解释一下如何使用 JACOB 将 VB 代码转换为 Java 吗?
题
我正在尝试通过 JACOB/JAVA 从模板创建 Word 文档。我似乎找不到任何关于 JACOB 的像样的文档。有人可以解释一下 Dispatch 是如何工作的(.get | .put | .toDispatch)吗?我正在尝试将以下代码转换为 JACOB:
Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
Selection.Cells.Merge
我试过:
Dispatch.call(oSelection, "MoveRight", 2, "Extend");
Dispatch.call(oSelection, "Merge").toDispatch();
但这肯定行不通。
任何帮助,将不胜感激。
解决方案
雅各布没有任何问题,它就像宣传的那样有效。
因此,首先,您必须找到Word 2003的对象引用,您似乎正在使用的原因是,当使用命名参数时,可能会省略一些可选参数,并且某些参数可能会根据顺序指定。所以我首先需要确认Selection.MoveRight的签名。这是 MoveRight 的文档: http://msdn.microsoft.com/en-us/library/aa212388(v=office.11).aspx
expression.MoveRight(Unit, Count, Extend)
Unit 和 Extend 是枚举,因此我们必须为它们找到正确的整数常量。wdCharacter 是 1,wdExtend 也是 1(得出这些值的方式不同,最简单的方法是查看 Office 应用程序的 VBA 编辑器内的对象浏览器)。
假设 oSelection 是一个有效的对象,这应该可以工作:
Dispatch.call(oSelection, "MoveRight", 1, 2, 1);
现在对于第二行,您忘记了翻译中的单元格。你将需要这样的东西:
Dispatch cells=Dispatch.get(oSelection,"Cells").toDispatch();//Selection.Cells.
Dispatch.call(cells, "Merge"); //Selection.Cells.Merge()
请注意,我没有在第二行调用 toDispatch,因为 Merge 不返回任何内容。toDispatch 用于将返回值(如第一行所示)转换为 Dispatch 对象,稍后我可以使用该对象来调用该对象。
不隶属于 StackOverflow