Microsoft Excel Macro运行Java程序

Microsoft Excel Macro运行Java程序,第1张

Microsoft Excel Macro运行Java程序

是的,有可能。

实际上有很多方法,希望您喜欢我的示例。

为了证明这一点,我创建了一个程序,其中一些文本作为参数发送,并且程序以更改后的版本作为响应。我做了一个可运行的罐子。第一个示例从args中读取参数,而从标准输入中读取其他参数。

文件 Hello.javaH1.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.javaH2.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());    }}

您可以将它们保存在一个jar中,但是随后需要创建并使用清单(这有点过分杀伤)。

现在,在Excel中,我添加一个模块和对Windows脚本宿主对象的引用。如果您不喜欢

sleep
,则可以将其替换为
DoEvents

'add a reference to Windows script Host Object Model'for example : Tools-ReferencesOption ExplicitPrivate 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    LoopEnd SubPrivate 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 = execEnd 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.ReadAllEnd Sub

就我而言,我收到了以下回复:

标准输出:你好玛格斯。

标准输出:你好玛格斯。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5615540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存