【问题标题】:How to run VBS function with parameters from Java and assign result to variable如何使用 Java 中的参数运行 VBS 函数并将结果分配给变量
【发布时间】:2017-07-02 20:24:56
【问题描述】:

我有这个 excel 宏:

Function Calculate_Something(StartDate As Date, EndDate As Date) As Double

//some math is here, not important

Calculate_Something = Result
End Function

我想将我的日期传递给这个宏,在我的 Java 程序中执行它,最后得到返回值并将它分配给我在 Java 中的值。

我已经用这个函数创建了 VBS 脚本,并尝试在 Java 中像这样执行它:

 String[] parms = {"wscript", "calc.vbs", "2017-02-06 09:38:36", "2017-02-06 12:47:41"};
 Runtime.getRuntime().exec(parms);

但它没有用。你知道我该怎么做吗?

【问题讨论】:

    标签: java excel vbscript vba


    【解决方案1】:

    您将希望使用cscript.exe 而不是wscript.exe,它们都是同一个主机,但一个是为 GUI 设计的,而另一个是为命令行设计的。

    修改 VBScript 函数以将Result 输出到屏幕(执行的命令输出流),然后使用从调用Runtime.getRuntime().exec(parms); 派生的Process 对象检索它。

    Process 对象有一个名为 getInputStream() 的方法,它应该允许您访问和读取脚本输出返回的值。

    try {
        String[] parms = {"cscript", "calc.vbs", "2017-02-06 09:38:36", "2017-02-06 12:47:41"};
        Process p = Runtime.getRuntime().exec(parms);
    
        // Get Input Stream from the Process
        BufferedReader is = new BufferedReader(new InputStreamReader(p.getInputStream()));
    
        // Do something with stream, read etc.
        String line;
        while ((line = is.readLine()) != null)
            System.out.println(line);
    
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    

    有用的链接

    【讨论】:

      猜你喜欢
      • 2011-10-22
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 2013-11-12
      • 2021-11-15
      • 2022-07-02
      相关资源
      最近更新 更多