Rei*_*vax 10 java dll vba netbeans excel-vba
问候StackOverflow,
我搜索了更大的互联网,并被许多帖子或者答案所困扰,这些答案解释了我正在尝试的完全相反的顺序.
我有一个包含大量VBA代码的Excel文件.在Excel中打开文档时,有4个公共子例程不占用用户可以调用的参数,这些子例程根据需要操作各个工作表中的数据.我们有一个大型Java应用程序,我们希望通过从Java环境调用宏来与该文档进行交互.关键是我们只需编写一次VBA代码,然后Java就可以调用它来执行.此外,我们假设Java应用程序的用户不一定能立即访问Excel,而是在Windows机器上运行.怎么一个人去做呢?
我们是否将VBA代码编译成DLL,并从Java中调用它?如何编译DLL,是否需要使用Visual Studio?我们如何从Java调用DLL?我们应该尝试某种COM对象吗?
请注意,作为我在其他地方的问题最常见的答案,我非常清楚如何从VBA中调用Java,而不是从Java调用VBA.
先感谢您.
我基本上看到了从Java应用程序调用Excel中的VBA代码的三个选项:
Java COM Bridge:有几种工具可用于从Java调用COM或COM Automation组件.Excel就是这样一个组件.我知道雅各布和JCom,但可能会有更多这样的工具.
Java/VBScript/COM自动化:由于您显然不需要将数据传递给VBA代码,因此最简单的解决方案可能是编写启动Excel的VBScript,打开文档,调用宏并关闭Excel.这个脚本是从Java启动的Runtime.getRuntime().exec("cmd /c start script.vbs");
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
Run Code Online (Sandbox Code Playgroud)
您无法将VBA代码编译为DLL.没有工具(与完整的Visual Basic相比).
我希望这个答案有用,即使我不明白你的意思:"我们想要假设Java应用程序的用户不一定能立即访问Excel,而是在Windows机器上运行."
| 归档时间: |
|
| 查看次数: |
19832 次 |
| 最近记录: |