I have learnt to read and write an Excel file using a Java program with the help of Jxl and POI API. Is it possible to run a Java program with the help of macros?

解决方案

Yes, it is possible.

There are quite a few ways actually and I hope you like my examples.

To demonstrate this, I create a program where some text is send as arguments and program responds with an altered version of it. I made a runnable jar of it. First example reads the argument from args and other from standard input.

File Hello.java and 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());

}

}

File Hello2.java and 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());

}

}

You can save them in a single jar, but then you need create and use a manifest (that's a bit overkill).

Now in Excel I add a module and a reference to Windows Script Host Object. If you do not like the sleep, then you can replace it with 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

And to test it I saved the files to c:\ drive and used the code:

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

In my case I get a responce of :

STDOUT: Hello Margus.

STDOUT: Hello Margus.

If you found this useful, do not forget to upvote :D

excel宏 java,Microsoft Excel宏运行Java程序相关推荐

  1. Devart Excel 插件 Crack,Microsoft Excel 和非常普通的 Excel 电子表格

    Devart Excel 插件 Crack,Microsoft Excel 和非常普通的 Excel 电子表格 Devart Excel 插件允许开发人员的用户使用云以及 Microsoft Exce ...

  2. 【java】使用cmd运行java程序

    做作业时,有这样一道题: 在命令行状态下,如果命令"java Hello"成功运行了程序并打印出Hello world,那么下面哪个叙述是错误的?(  ) A) 当前目录中一定存在 ...

  3. 什么app可以打开java文件_notepad++可运行Java文件版

    notepad++可运行Java文件版,是大神对notepad++进行了在处理的版本,对于使用notepad++的新手来说,这款个版本实在是好用到爆,用notepad++写代码比用记事本好操作,而且还 ...

  4. 在linux怎样运行java,怎么在linux运行java

    怎么在linux运行java [2021-02-01 00:44:14]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(" ...

  5. linux java执行_linux下运行java

    3. 编译运行命令 编译 javac [-d] [-o] [-verbose] [-classpath][-sourcepath] -d, 指定生成的.class文件存放目录,一般省略则默认放在jav ...

  6. 怎么在本地运行java项目,eclipse怎么运行java web项目?

    Eclipse是用来做开发的自由集成开发环境,这也是很多java程序员会使用的开发环境,所以可以使用eclipse创建项目并运行java web项目,那eclipse怎么运行java web项目?接下 ...

  7. java苹果_iPhone上运行Java 苹果没兴趣 Sun单干

    3月10日国际报道 Sun正在为苹果iPhone开发一款JVM(Java虚拟机),并计划在6月份发布这款软件,使Java应用软件能够在iPhone上运行. Sun负责Java研究的副总裁克莱因上周表示 ...

  8. java linux at_linux下运行java程序报错,求大神解答

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/loc ...

  9. java in thread main_linux运行java项目中的main方法,报错:Exception in thread main jav

    在windows环境运行正常的java netty项目部署到linux中调用main方法报错,修改过springmvc版本和jdk版本都没用,总是报 java.lang.ExceptionInInit ...

最新文章

  1. 【完结】利用 Composer 完善自己的 PHP 框架(三)——Redis 缓存
  2. 安卓程序如何保证低内存下依然存在
  3. 【DP】[NOI2013]书法家
  4. MyEclipse/Eclipse 中使用javap
  5. python如何画出多个独立的图片_python实现在一个画布上画多个子图
  6. 手把手实现一条延时消息
  7. bat脚本保存dir结果_Tomcat的启停脚本源码解析
  8. SQOOP 导出SQL SERVER中数据
  9. Android MediaPlayer播放raw资源封装类
  10. 电子科学与技术跨考计算机,关于跨考计算机的纠结
  11. vFlat Scan – 可能是最快捷的纸质书扫描应用,一次 2页,居然还能移除手指头[iOS/Android]
  12. 基于go语言的史上最流弊的学生成绩管理系统
  13. 教您用CSS的鼠标手势实现任意标签鼠标划过变成小手
  14. mysql数据库中key 、primary key 、unique key 与index区别
  15. 微信小程序登录服务器失败,微信小程序后台登录一直失败
  16. oa系统用什么云服务器,oa系统用什么云服务器
  17. windows10系统设置选项里没有触摸板选项
  18. 代数合并同类项计算机步骤,代数式(合并同类项)
  19. 面对未来,我在黑夜中努力奔跑.
  20. 前端常见功能测试用例

热门文章

  1. 想学游戏建模要从哪里开始?,外包私活怎么接?
  2. gvdp哪个工厂用_和汽车主机厂打交道,你不可不知这些英文缩写!实用!大伙速览速记!...
  3. java玫瑰花代码_玫瑰花c语言代码
  4. 浪潮刀片服务器型号,浪潮刀片服务器.pdf
  5. 【opencv3】滑动条调节RGB颜色阈值并输出滑动条的值
  6. android 老人机模式,如何将智能手机切换成老人机模式
  7. excel表格怎么求时间差值_excel表格,如何计算日期的天数或时间差
  8. Flask框架二 Jinja2
  9. dolphinscheduler v2.0.1 master和worker执行流程分析(一)
  10. 【国庆福利】中奖名单公布