【问题标题】:Access VBA Shell command not working访问 VBA Shell 命令不起作用
【发布时间】:2017-12-25 06:20:47
【问题描述】:

所以我试图获得一个非常简单的 shell 命令来执行创建的批处理文件,但由于某种原因,shell 命令没有执行任何操作。

批处理文件被创建,当我双击批处理文件时,它执行脚本就好了,但是如果我尝试在 VBA 中调用 shell 命令,它似乎试图打开一个命令窗口,但立即关闭它之后,不会产生任何错误。在我重新格式化这台笔记本电脑之前,这段代码可以正常工作,并且这段代码可以在另一个运行 Server 2012 R2 的系统上运行(我正在运行 Windows 10)

        Dim SedjaShell
        f = "C:\Temp\_SedjaScript.bat"
        Open f For Output As #1
        Print #1, Chr(34) & SedjaDir & Chr(34) & " merge --files " & Page1 & " " & Page2 & " " & TOS & " " & Disclosure & " --output " & OutputDir
        Print #1, "Pause"
        Close #1

        SedjaShell = Shell("C:\Temp\_SedjaScript.bat", 1)

有什么我可能遗漏的吗?

编辑 添加_SedjaScript.Bat的内容

"C:\Users\User\Desktop\DealTracker\MergeFiles\sejda-console-3.0.4\bin\sejda-console.bat" merge --files C:\Temp\ContractSummary.pdf C:\Temp\Page2.pdf C:\Temp\TOS.pdf C:\Temp\Disclosure.pdf --output "C:\Users\User\Desktop\DealTracker\Completed Contracts\Company-Name-Inc-07-19-2017-Contract.pdf"
Pause

【问题讨论】:

  • 您确定它不起作用吗?它本可以完成它的工作并自行关闭,因为这是批处理脚本的默认行为。
  • 我知道它不起作用,因为输出文件不存在。我也刚刚在另一个系统上尝试了完全相同的代码,它工作得很好。此外,如果它正在工作,脚本窗口将保持打开状态,因为我在脚本末尾添加了暂停条件。但是,如果我手动启动 .bat 文件,脚本会启动并输出合并文件
  • 您的批处理文件可能正在使用相对路径。尝试使用ChDir 更改Shell 命令的工作目录(如果需要,还可以使用ChDrive)。如果我不得不猜测,你会想要ChDir "C:\Temp"
  • 不,那没用
  • 尝试准确显示(Debug.Print 或 MsgBox)您正在写入批处理文件的内容。

标签: vba ms-access


【解决方案1】:

感谢 Andre,我能够让脚本在 VBA 的 Shell 命令中运行。

通过将我的 JRE 的 PATH 设置为 JAVA_HOME,我能够成功启动脚本。

setx JAVA_HOME "C:\Program Files (x86)\Java\jre1.8.0_141"
setx PATH "%PATH%;%JAVA_HOME%\bin";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    相关资源
    最近更新 更多