有人可以解释一下如何使用 JACOB 将 VB 代码转换为 Java 吗?

StackOverflow https://stackoverflow.com//questions/24039523

  •  21-12-2019
  •  | 
  •  

我正在尝试通过 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 对象,稍后我可以使用该对象来调用该对象。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top