我已经学会了阅读和使用Java程序与JXL和POI API的帮助下写一个Excel文件。 是否有可能运行与宏的帮助下,Java程序?
Answer 1:
对的,这是可能的。
有相当实际上是一些方法,我希望你喜欢我的例子。
为了证明这一点,我在那里创造一些文字被发送的参数和程序与它的一个修改过的版本响应的程序。 我做的是一个可运行的罐子。 第一示例读取来自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());
}
}
你可以将它们保存在一个罐子,但那么你需要创建并使用一个清单 (这是一个有点矫枉过正)。
现在,在Excel中我添加一个模块和Windows脚本宿主对象的引用。 如果你不喜欢的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:你好Margus。
STDOUT:你好Margus。
如果你发现这个有用,别忘了给予好评:d
Answer 2:
您的VBA可以写输出到文件和Java可以定期轮询文件修改,并从文件中读取。 并通过另一个文件中的数据写回VBA。 VBA - Java集成几乎是不可能的,除非你只是想通过System.execute从炮火Java程序(......)。
Answer 3:
我用它..请注意,使用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
文章来源: Microsoft Excel Macro to run Java program