簡體   English   中英

如何從Java代碼調用Excel VBA宏?

[英]How to call an Excel VBA Macro from Java Code?

我需要從通過Java從數據庫中獲取的數據生成Excel工作表。 為此,我需要在生成Excel時調用一些VBA宏函數。 任何人都可以幫助我如何從Java代碼調用VBA宏?

我真的不了解從數據庫中的數據生成Excel工作表的整體方法。 通常,我會使用Vivek提出的Apache POI。

但是,如果您確實需要在工作表中調用Excel宏,那么您需要兩件事:

首先,您需要一個JAVA到COM橋,如JACOBCOM4J或類似的工具。 如果它支持自動化接口就足夠了。 它不需要完整的COM支持。

其次,使用JAVA-to-COM橋接器,您應該啟動Excel,加載Excel工作表,運行宏,保存並關閉Excel。 所以你必須調用相當於:

Set Wb = Application.Workbooks.Open FileName
Application.Run MacroName
Wb.Save
Application.Quit

如果您不能使用JACOBCOM4J ,則可以創建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

將它保存為myVBS.vbs ,您可以從Java代碼中調用它:

cmd = "you_path\\myVBS.vbs";
Runtime.getRuntime().exec(cmd);

適用於我的解決方案:java代碼:

try {
Runtime.getRuntime().exec("wscript yourPth\\myVBS.vbs");
} catch (IOException e) {
System.out.println(e);
System.exit(0);
}

myVBS.vbs腳本:

Set objShell = CreateObject("WScript.Shell")
Dim cur
cur = "urpath to myVBS.vbs script"
WScript.Echo cur

ExcelMacroExample

Sub ExcelMacroExample() 

Dim xlApp 
Dim xlBook 
Dim xlsFile
xlsFile = cur & "\myExcel.xlsm"

Set xlApp = CreateObject("Excel.Application") 
Set xlBook = xlApp.Workbooks.Open(xlsFile) 
xlApp.Run "moduleName"
xlApp.Save
xlApp.Quit 

End Sub 

我不確定是否可以直接從Java調用宏。 但是,當用戶第一次打開Excel工作表時,您可以在Excel工作表中填充數據並調用宏。 您可以使用Apache POI工具在包含宏的Excel工作表中填充數據 - http://poi.apache.org/spreadsheet/index.html

您可能還能夠在工作表更改時在Excel中捕獲事件,您甚至可以調用所需的宏,因此如果要調用宏“藍色”,則可以在隱藏的工作表中寫入“藍色” Excel將捕獲更改,當您捕獲更改時,您可以看到寫入的內容,並執行一些ifelse語句以獲取要為該實例調用的宏。 不是很好的編碼,但一個簡單的解決方法。 我會自己做其他方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM