vba shell java call errors

10 浏览
0 Comments

vba shell java call errors

在一个MS Access公共函数中,我使用shell调用运行一个java xslt模块:\n

Set shell = CreateObject("WScript.Shell")
cmd = "java -jar D:\saxon9he.jar -s:D:\input.xml -xsl:D:\transf.xslt -o:D:\output.xml"
Set objExecObject = shell.Exec(cmd)

\n我捕获到了以下错误:\n\"VBA\n由于在另一个MS Access实例中完全相同的代码运行正常,我认为我必须引用某个环境变量(其中之一是已设置为C:\\Program Files\\Java\\jdk1.5.0_16\\binJAVA_HOME)。
\n但是在MS Access中我应该在哪里设置这个引用?
\n还是这个错误是由其他原因引起的?
\n例如,MS Access / VBA访问USER和/或SYSTEM中的环境变量PATH可能会出现问题吗?在我的设置中,用户环境参数PATH保存了java.exe的位置信息。

0
0 Comments

问题出现的原因是MSA/VBA无法应用用户环境中的PATH参数,导致无法正确执行命令。解决方法是手动设置Java路径来执行命令。

原因分析:

在代码中,使用了shell对象的Environment方法获取了用户环境中的JAVA_HOME变量,并将其拼接到java命令的路径中。然而,由于某种原因,MSA/VBA无法正确地应用用户环境中的PATH参数,导致无法找到java.exe并执行命令。

解决方法:

为了确保能够正确执行命令,可以手动设置Java路径来执行命令。具体做法是在代码中直接指定Java的安装路径,然后拼接java命令的路径。这样就不再依赖于用户环境中的PATH参数。

参考代码:

Set shell = CreateObject("WScript.Shell")
Dim JavaHome As String
JavaHome = "C:\Program Files\Java\jdk1.8.0_181" '手动设置Java安装路径
cmd = JavaHome & "\bin\java -jar D:\saxon9he.jar -s:D:\input.xml -xsl:D:\transf.xslt -o:D:\output.xml"
Set objExecObject = shell.Exec(cmd)

通过以上方法,即可正常执行命令,而不受MSA/VBA无法应用用户环境中的PATH参数的影响。

0