我如何从Java调用Excel电子表格中的VBA代码



我有一个Excel文件与大量的VBA代码。当在Excel中打开文档时,用户可以调用4个不带参数的公共子例程,这些子例程根据需要操作各种工作表中的数据。我们有一个大型Java应用程序,我们希望通过从Java环境中调用宏来与这个文档进行交互。关键是我们只需要编写一次VBA代码,然后Java就可以调用它来执行。此外,我们希望假设Java应用程序的用户不一定能够立即访问Excel,而是在Windows机器上操作。一个人应该怎么做呢?

我们是否将VBA代码编译成DLL,并在Java中调用它?如何编译DLL,这需要使用Visual Studio吗?我们如何从Java调用DLL ?我们应该试试COM对象吗?

我基本上看到从Java应用程序在Excel中调用VBA代码的三个选项:

  1. Java COM Bridge:有几个工具可以让你从Java调用COM或COM Automation组件。Excel就是这样一个组件。我知道Jacob和JCom,但是可能有更多这样的工具可用。

  2. Java/VBScript/COM Automation:由于您显然不需要将数据传递给VBA代码,最简单的解决方案可能是编写一个VBScript启动Excel,打开文档,调用宏并关闭Excel。这个脚本是从Java开始的,Runtime.getRuntime().exec("cmd /c start script.vbs");

  3. JNI:您可以为您的应用程序编写特定的DLL。它实现了JNI接口,因此可以从Java调用它。它的实现使用COM调用与Excel一起工作。这样的DLL最好用VisualStudio编写,它支持c++调用COM对象。

无论你的解决方案是什么,你基本上想在Excel自动化界面上执行以下命令(以VBScript为例):

Dim xl
Set xl = CreateObject("Excel.Application")
xl.Workbooks.Open ("workbook.xlsx")
xl.Application.Run "MyMacro"
xl.Application.Quit
Set xl = Nothing 

不能将VBA代码编译成DLL。目前还没有这样的工具(与完整的Visual Basic相比)。

我希望这个答案是有帮助的,即使我不明白你的意思:"我们想假设Java应用程序的用户不一定能立即访问Excel,而是在Windows机器上操作。"

相关内容

  • 没有找到相关文章

最新更新