【问题标题】:Call a VB macro from java code从 java 代码中调用 VB 宏
【发布时间】:2010-05-12 00:39:55
【问题描述】:

我创建了一个 VB 宏。我想向宏传递一个字符串和一个文件位置。我将如何在 java 代码中调用它。有这个库吗?

【问题讨论】:

    标签: java vba ms-word


    【解决方案1】:

    您可以使用 Windows 附带的“cscript.exe”运行 vbscript。

    根据您的场景,您可以通过多种方式从 Java 启动它:

    • 使用Runtime.exec 启动程序。您可以直接在您的计划中执行此操作。
    • 使用具有 exec 任务的 Ant,或具有 exec 插件的 maven。这在将脚本作为构建或其他批处理过程的一部分调用时非常有用。

    编辑:如果您的脚本有 GUI,则使用“wscript.exe”。

    我假设您的意思是 vbscript,但如果您真的指的是宏,例如 Word 宏,那么您需要执行以下操作:

    "C:\Program Files\Microsoft Office\Office12\Winword.exe" 
    "C:\MyPath\MyDoc.doc" /m"Macro1"
    

    或者,您可以创建一个小的 vbscript 来实例化 Word 应用程序并使用 run() 方法来调用宏。您使用 cscript.exe/wscript.exe 执行该脚本。

    【讨论】:

    • 是否可以在另一台服务器上调用这些?即,而不是本地计算机上文件的路径,我将它们传递给另一台服务器上的文件的路径“//servername/Program Files\Microsoft Office\Office12\Winword.exe”我有一个存储文件的 Windows 服务器,但我的网络应用程序托管在 linux 服务器上。
    • 不直接 - 你的 linux 机器将无法运行 Winword。但是,您可以使用 ssh - 这将允许您从 linux 在 Windows 机器上运行可执行文件。
    【解决方案2】:

    "JACOB - Java COM Bridge" on SourceForge。该项目有第二个,more dated homepage

    还有一个名为J-Integra 的商业 (D)COM/ActiveX 自动化库,它看起来也可以做这样的事情。

    免责声明:这些只是我从 Google 中提取的链接,我对这些库没有实际经验。

    【讨论】:

      【解决方案3】:

      我们正在使用 Com4J,它为我们创建了一组看起来与 Word VBA 中可用的 ActiveX 类相同的 Java 类,并直接调用它们。这显然只适用于 Windows 机器,因为 Word 不能在 Linux 上运行(除非你有很多时间和 Wine)。

      通过在 Java 中准备好这些 API,我们将能够调用在 word 中定义的任何宏。

      【讨论】:

        猜你喜欢
        • 2018-04-12
        • 1970-01-01
        • 2016-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多