目录
■VBA代码
■Java代码
■运行效果
Excel
Log效果 (通过VBA调用jar后,运行,生成的Log)
■课题
■另外一种方式启动执行jar
■相关知识
1.Maven打包生成jar
2.log4J配置使用
3.Maven工程做成
4.使用Git,管理代码版本
■更多知识
1.Java知识整理
2.软件开发中使用单词
3.VBA操作相关内容整理
■VBA代码
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub CommandButton1_Click()
Dim cmdStr
cmdStr = "java -jar G:MyToolVBA_Jarjartool.jar " & """" & ActiveSheet.Range("C4").Value & """"
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec(cmdStr)
Dim exitCode
exitCode = oExec.exitCode
Do While exitCode = 0
Sleep 3000
exitCode = oExec.exitCode
Loop
Set oStdOut = oExec.StdOut
MsgBox "Return value is : " & exitCode
End Sub
■Java代码
package com.sxz.tool.moveResource;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class StartProcessRun {
public static void main(String[] args) {
// TODO Auto-generated method stub
String input = "";
if(args.length == 1){
input= args[0];
}
log.info("hello:" + input);
System.exit(666);
}
}
■运行效果
Excel
package com.sxz.tool.moveResource;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class StartProcessRun {
public static void main(String[] args) {
// TODO Auto-generated method stub
String input = "";
if(args.length == 1){
input= args[0];
}
log.info("hello:" + input);
System.exit(666);
}
}
■运行效果
Excel
===
Log效果 (通过VBA调用jar后,运行,生成的Log)
■课题
当java的处理内容多时,
会一直停留在命令行窗口界面,无法获得正常的返回值。
(【TODO】 尝试使用线程。)
也许和处理时间没有关系,程序中,sleep后,也能正常获取返回值。
或许和流处理有关, 强制终了后,返回值是【130】
程序中用到流的地方 文件MD5值的取得
MD5 与 Base64一起使用 加密,计算原理_sun0322的博客-CSDN博客_md5加密base64
但是为什么这种方式不行,另外一种方式启动执行jar(无法获得返回值),可以正常结束。
■另外一种方式启动执行jar
按钮对应的函数
Private Sub CommandButton1_Click()
Call callJar
End Sub
定义在模块中的方法
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandel As Long, ByVal dwMilliseconds As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal blnheritHandel As Long, ByVal dwProcessld As Long) As Long
Public Sub callJar()
Dim cmdStr
cmdStr = "java -jar G:SunXuezhiMyToolVBA_Jarjartool.jar " & """" & ActiveSheet.Range("C4").Value & """"
RetVal = Shell(cmdStr)
processId = OpenProcess(&H100000, False, RetVal)
r = WaitForSingleObject(processId, -1&)
r = CloseHandle(processId)
End Sub
===
■相关知识
1.Maven打包生成jar
POM 打包 Jar,指定Main方法的类,指定使用的JDK_sun0322的博客-CSDN博客_pom打包指定main
2.log4J配置使用
https://blog.csdn.net/sxzlc/article/details/124621551
3.Maven工程做成
Maven的Pom文件 ( Eclipse中创建Maven工程, 使用注意点,DevOps相关)_sun0322的博客-CSDN博客_eclipse的pom文件在哪
4.使用Git,管理代码版本
Eclipse中的Git使用之Branch创建,Merge_sun0322的博客-CSDN博客
■更多知识
1.Java知识整理
Java8新特性学习_001_(Lambda表达式,函数式接口,方法引用,Stream类,Optional类)_sun0322的博客-CSDN博客
2.软件开发中使用单词
工作中使用到的单词(软件开发)_sun0322的博客-CSDN博客_https://10.59.142.4/integration
3.VBA操作相关内容整理
VBA中 各种数据类型的使用(自定义数据类型Type,数组,数据字典)、读写文件_sun0322的博客-CSDN博客_vba中type类型
===



