【发布时间】:2021-08-27 05:43:54
【问题描述】:
我编写了一个 Java 程序,它创建了一个至少有 4 张工作表的 Excel 工作簿,并在其中加载了一些 vb 模块(通过加载带有 vb 模块的 template.xlsm)现在我想将此 Excel 工作簿转换为 PDF,所以我有Excel宏VBA中的这段代码
Dim saveLocation As String
saveLocation = Application.ThisWorkbook.path
Dim ws As Worksheet
For Each ws In Application.ThisWorkbook.Worksheets
With ws.PageSetup
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
.Orientation = xlLandscape
.CenterVertically = True
.CenterHorizontally = True
.PaperSize = xlPaperTabloid
End With
Next
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=saveLocation
End Sub
我从 Excel VBA 执行它并且工作正常 但是,我想要的是在创建它之后直接从 Java 运行它 所以我在编写 Excel 工作簿(用 Java)之后所做的如下
我从 Java 将以下代码写入具有 VBS 扩展名 (module.vbs) 的文本文件
Sub ExcelMacro()
Dim objExcel
Dim objWorkbook
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("PATH\Cost Sheet_233.xlsm")
objExcel.Run "'Cost Sheet_233.xlsm'!Module3.SaveActiveSheetsAsPDF"
objWorkbook.Save
objWorkbook.Close
objExcel.Quit
End Sub
然后我执行了以下命令
try {
Runtime.getRuntime().exec( new String[] { "C:\\Windows\\System32\\wscript.exe", filePath + "\\module.vbs"} );
}
catch (Exception ex)
{
ex.printStackTrace();
}
输出是/应该是包含所有 Excel 工作表的 PDF 文件 同样,当我从 Excel VBA 运行代码时,它工作正常。 module.vbs 和宏中的一个都可以正常工作并生成 PDF 文件,但 Java exec 语句不是 当然,路径也100%正确(存在wscript.exe) 我也试过 cscript.exe 但没用
可能是什么问题,或者我错过了什么?
【问题讨论】:
-
Apache poi在这里无法提供帮助,因为它不会以任何方式与Excel或Windows操作系统交互。 -
尝试从
module.vbs中删除Sub和EndSub行或添加一行Call ExcelMacro()
标签: java excel vba pdf apache-poi