访问挂起 WScript.Shell.run

Access hangs on WScript.Shell.run

我正在使用 WScript.Shell 到 运行 读取文件并发送一些数据的第三方可执行文件。

Dim objShell As Object, Shellerror As Long
Set objShell = CreateObject("WScript.Shell")

问题是,Access 在 .run 语句上挂起。

Shellerror = objShell.Run(Chr(34) & PreveriPath(ApplicationPath) & "SimplyTax\simplytax.exe" & Chr(34) & "" & VrstaZahteve & " " & Delovanje & " " & SWid & " " & Chr(34) & Datoteka & Chr(34) & " " & Geslo & " RD#" & Chr(34) & ResponseDatoteka & Chr(34), 0, True)

您可能仅通过此调用就看不到任何内容,这是实际获得 运行.

的字符串
Shellerror = objShell.Run("F:\AA\Bicom 5\SimplyTax\simplytax.exe" racun test 10456317 "F:\AA\Bicom 5\SimplyTax\racun.txt" test RD#"F:\AA\Bicom 5\SimplyTax\Response\STResponse.txt", 0, True)

现在的问题是,执行只是挂在这一行,没有任何错误或任何东西,直到我强行关闭 Access(它进入无响应状态)。

我已经研究这个问题两天了,我唯一能弄清楚的是只有当文件路径中有空白时它才会挂起。我不能只删除路径中的空格,因为我们正在为几家不同的公司做这件事,它们有不同的文件夹结构(有些有空格,有些没有)。

据我所知,使用不带空格的路径的公司没有任何问题。

我已经尝试了一些路径,none 似乎可行。我在它们周围加上双引号,在它们周围放置单引号,我删除了所有引号,我尝试使用产生相同结果的 ShellExecute 函数,它只是使 Access 响应速度不快。

我觉得我在这里碰壁了...我做错了什么?

那么这就是你的解决方案。

如果调用的程序没有完成,Access(或者更确切地说 Shell.Run)将等待它。等等。

您可以尝试为 intWindowStyle 传递 1 而不是 0 以显示程序 window。可能显示错误。

此外,您的命令行的这一部分看起来很奇怪:

test RD#"F:\AA\Bicom 5\SimplyTax\Response\STResponse.txt"

RD#真的应该是这个样子吗?

很遗憾,我没有找到解决这个问题的方法。似乎有问题的程序无法处理带空格的文件路径...

我只是在我的应用程序中添加了一个新字段,它需要一个没有空格的文件路径,并告诉他们将程序复制到该路径。现在可以正常使用了。

感谢您的回复和帮助。