【问题标题】:Can someone explain how to convert VB code to Java with JACOB?有人可以解释如何使用 JACOB 将 VB 代码转换为 Java 吗?
【发布时间】:2014-07-25 05:26:15
【问题描述】:

我正在尝试通过 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();

但这肯定行不通。

任何帮助将不胜感激。

【问题讨论】:

  • 哦,哇,通常“请帮我把语言 X 转换成 Y”的问题很糟糕,但你的问题肯定是经过更多研究的。
  • 我已经尝试了一段时间,并且研究了代码转换的(稀缺)示例,但我似乎无法将其应用于我自己的代码。雅各布看起来真的很有用,但如果我无法解决其中的一些问题,那么我可能不得不尝试替代方案。

标签: java jacob


【解决方案1】:

Jacob 没有任何问题,它像宣传的那样工作。

首先,您必须找到您似乎正在使用的 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 对象,以便稍后调用该对象。

【讨论】:

  • “方法 getProperty(Dispatch, String) 未定义类型 Dispatch。”是从 .getProperty 提出来的。
  • 你说得对,应该是get,固定代码,因为getProperty只对ActiveXObject有效
猜你喜欢
  • 2011-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多