如何从Java代码调用Excel VBA宏?

Par*_*edi 4 java excel vba excel-vba

我需要从通过Java从数据库中获取的数据生成Excel工作表.为此,我需要在生成Excel时调用一些VBA宏函数.任何人都可以帮助我如何从Java代码调用VBA宏?

Cod*_*odo 7

我真的不了解从数据库中的数据生成Excel工作表的整体方法.通常,我会使用Vivek提出的Apache POI.

但是,如果您确实需要在工作表中调用Excel宏,那么您需要两件事:

首先,您需要一个JAVA到COM桥,如JACOB,COM4J或类似的工具.如果它支持自动化接口就足够了.它不需要完整的COM支持.

其次,使用JAVA-to-COM桥接器,您应该启动Excel,加载Excel工作表,运行宏,保存并关闭Excel.所以你必须调用相当于:

Set Wb = Application.Workbooks.Open FileName
Application.Run MacroName
Wb.Save
Application.Quit
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您无法使用,JACOB或者COM4J您可以制作Visual Basic脚本并从Java程序运行该脚本.

要创建脚本打开记事本并写下这样的内容:

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("myExcel.xlsm")

objExcel.Application.Run "myExcel.xlsm!MyMacroName" 
objExcel.ActiveWorkbook.Close

objExcel.Application.Quit
WScript.Quit
Run Code Online (Sandbox Code Playgroud)

保存为myVBS.vbs,您可以从Java代码中调用它:

cmd = "you_path\\myVBS.vbs";
Runtime.getRuntime().exec(cmd);
Run Code Online (Sandbox Code Playgroud)