我创建了一个必须抛出VBA Excel宏的Jar文件。 为此,我使用了jacob API 我的电话代码是:
final ActiveXComponent excel = new ActiveXComponent("Excel.Application");
try {
final Dispatch workbooks = excel.getProperty("Workbooks").toDispatch();
final Dispatch workBook = Dispatch.call(workbooks, "Open", file.getAbsolutePath()).toDispatch();
final Variant result = Dispatch.call(excel, "Run", new Variant("\'" + file.getName() + "\'" + macro));
com.jacob.com.Variant f = new com.jacob.com.Variant(true);
Dispatch.call(workBook, "Close", f);
} catch (Exception e) {
ReadExcel.errorLog(e.getMessage());
} finally {
excel.invoke("Quit", new Variant[0]);
ComThread.Release();
}
当我手动启动我的jar时,这段代码工作正常,但是在计划任务中我遇到了这个错误:
错误 - 调用:开源:Microsoft Office Excel描述: Microsoft Office Excel无法访问该文件 «C:\用户\我\桌面\项目\ ExcelWithMacro.xlsm»。有几个 可能的原因:
- 文件名或路径不存在。
- 该文件正由另一个程序使用。
- 您尝试保存的工作簿与当前打开的工作簿具有相同的名称。
但该文件存在,未被其他程序使用且未打开...
错误就行了:
final Dispatch workBook = Dispatch.call(workbooks, "Open", file.getAbsolutePath()).toDispatch();