我學會了在Jxl和POI API的幫助下使用Java程序讀取和寫入Excel文件。是否可以在宏的幫助下運行Java程序?用於運行Java程序的Microsoft Excel宏
回答
是的,這是可能的。
實際上有很多方法,我希望你喜歡我的例子。
爲了演示這一點,我創建了一個程序,其中一些文本作爲參數發送,程序以它的更改版本作爲響應。我做了一個可運行的jar。第一個示例從args和標準輸入中讀取其他參數。
文件Hello.java和H1.jar:
public class Hello {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
if (args.length > 0)
sb.append(' ').append(args[0]);
System.out.println(sb.append('.').toString());
}
}
文件Hello2.java和H2.jar:
import java.util.Scanner;
public class Hello2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder("Hello");
sb.append(' ').append(sc.nextLine());
System.out.println(sb.append('.').toString());
}
}
你可以將它們保存在一個單罐,但你需要創建和use a manifest(這有點矯枉過正)。
現在在Excel中,我添加了一個模塊和對Windows Script Host Object的引用。如果你不喜歡sleep
,那麼你就可以DoEvents
替換爲:
'add a reference to Windows Script Host Object Model
'for example : Tools-References
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub RunSleep(_
exec As WshExec, _
Optional timeSegment As Long = 20 _
)
Do While exec.Status = WshRunning
Sleep timeSegment
Loop
End Sub
Private Function RunProgram(_
program As String, _
Optional command As String = "" _
) As WshExec
Dim wsh As New WshShell
Dim exec As WshExec
Set exec = wsh.exec(program)
Call exec.StdIn.WriteLine(command)
Call RunSleep(exec)
Set RunProgram = exec
End Function
,並測試它,我將文件保存到c:\
驅動器所使用的代碼:
Public Sub Run()
Dim program As WshExec
Set program = RunProgram("java -jar ""C:\\H1.jar"" Margus")
Debug.Print "STDOUT: " & program.StdOut.ReadAll
Set program = RunProgram("java -jar ""C:\\H2.jar", "Margus")
Debug.Print "STDOUT: " & program.StdOut.ReadAll
End Sub
在我來說,我得到一個迴應:
STDOUT:你好瑪格斯。
STDOUT:你好瑪格斯。
如果你發現這個有用的,別忘了給予好評:d
請注意,變量**程序**包含其他有用的信息,如錯誤流和返回碼。 – Margus 2012-07-05 22:04:14
@sreehari我的疑問是,我已經編寫了一個程序,用於從已經存在的Excel文件中讀取單元格中的數據並對其進行處理並將其放回到同一個文件中。我對Java並不陌生,但我對Excel馬科斯來說是新手。我需要寫一個宏嗎?我對此毫無頭緒,教程也沒有提供任何信息。那麼怎麼做呢? – 2012-07-06 04:56:41
要在Excel中打開VBA環境,可以使用「alt + f11」。另一種方法是使用開發人員功能區Visual Basic按鈕。 Excel的每張表都有代碼頁,但Module就像一個共享空間。請注意,我可以使用命令** java -jar「C:\ H1.jar」Margus **在CMD中運行程序 - 只需要編寫很少的代碼。 – Margus 2012-07-06 06:38:17
您的VBA可以將輸出寫入文件,Java可以定期輪詢文件修改並從文件讀取。並通過另一個文件將數據寫回VBA。 VBA - Java集成幾乎是不可能的,除非您只想通過System.execute(...)從shell中啓動Java程序。
不正確。 VBA-Java集成遠非不可能。前段時間,甚至還有舊的Sun Java ActiveX Bridge,不幸的是它已經被Oracle停用(仍然可用於Java 1.4:http://docs.oracle.com/javase/1.4.2/docs/guide/beans/ axbridge/developerguide /)。但仍有技術可用。 Obba http://www.obba.info可以使用VBA。此外可以使用xlloop。 – 2013-08-16 19:58:30
我用它..請注意,使用javaw進程,否則黑窗口彈出
Dim result As String
Dim commandstr As String
commandstr = "javaw -jar somejar someparameter"
' try with or without cast to string
result = CStr(shellRun(commandstr))
'somewhere from SO but forget.. sorry for missing credits
Public Function ShellRun(sCmd As String) As String
'Run a shell command, returning the output as a string'
Dim oShell As Object
Set oShell = CreateObject("WScript.Shell")
'run command'
Dim oExec As Object
Dim oOutput As Object
Set oExec = oShell.exec(sCmd)
Set oOutput = oExec.StdOut
'handle the results as they are written to and read from the StdOut object'
Dim s As String
Dim sLine As String
While Not oOutput.AtEndOfStream
sLine = oOutput.ReadLine
If sLine <> "" Then s = s & sLine & vbCrLf
Wend
ShellRun = s
End Function
現在的問題是編寫一個Java程序 – user7294900 2017-07-06 13:21:25
感謝您的評論,但問題是'是否可以在宏的幫助下運行Java程序?'並且這個解決方案沒有睡眠方法,以及我指向javaw而不是java – mschwehl 2017-07-07 07:53:10
- 1. 使用Microsoft Graph運行宏
- 2. 從Outlook宏運行Excel宏?
- 3. 試圖從運行javascript的html應用程序調用excel宏
- 4. Python - 運行Excel宏
- 5. VBA excel運行宏
- 6. Python運行Excel宏
- 7. IronPython - 運行Excel宏
- 8. 如何從Java運行Excel宏?
- 9. 運行特定的宏會凍結Microsoft Excel
- 10. Microsoft Excel宏更改單元格的值當運行
- 11. Excel宏 - 宏運行時的屏幕
- 12. 在excel中的宏中運行宏
- 13. Excel VBA - 在應用程序打開時運行宏
- 14. 對於VBA循環。宏Excel程序
- 15. Microsoft Excel宏編碼問題
- 16. 在我自己的java應用程序中運行ImageJ宏
- 17. 運行宏崩潰excel
- 18. 運行Excel宏外練成
- 19. VBScript來運行Excel宏
- 20. Excel宏運行訪問宏問題
- 21. excel中的程序宏
- 22. 用於複製特定行的Excel宏
- 23. 用於逐行比較的Excel宏與行重新排序
- 24. 未安裝excel時運行Excel宏
- 25. 如何爲Excel宏程序創建可執行應用程序?
- 26. Excel VBA - 宏運行但不起作用
- 27. 當宏運行時使用Excel
- 28. DB Microsoft Excel驅動程序
- 29. 用於發票的Excel宏
- 30. 運行Java應用程序
檢查這一點 - [http://stackoverflow.com/questions/5297341/calling-java-library-jar-from-vba-vbscript-visual-basic-classic][1] [1]:HTTP:// stackoverflow.com/questions/5297341/calling-java-library -jar-vba-vbscript-visual-basic-classic – sreehari 2012-07-05 11:57:35
所有這些討論都告訴我們這是不可能的。 – 2012-07-05 12:13:29
這個怎麼樣? http://stackoverflow.com/questions/10879757/vba-shell-java-call-errors – JimmyPena 2012-07-05 17:44:32