Access在WScript.Shell.run上挂起

时间:2015-12-10 12:09:46

标签: vba ms-access shellexecute wsh

我使用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(它进入无响应状态)。

我已经研究了这个问题两天了,我唯一能想到的是它只会在文件路径中出现空白时挂起。我不能从路径中删除空白,因为我们正在为几个不同的公司执行此操作,这些公司具有不同的文件夹结构(一些具有空格,一些没有)。

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

我尝试了一些路径,但似乎都没有。我在它们周围加上双引号,我在它们周围加上单引号,我删除了所有引号,我尝试使用产生相同结果的ShellExecute函数,它只是使Access没有更快响应。

我觉得我在这里撞墙......我做错了什么?

2 个答案:

答案 0 :(得分:0)

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

如果被叫程序没有完成,Access(或更确切地说是Shell.Run)将等待它。等等。

您可以尝试为intWindowStyle传递1而不是0来显示程序窗口。也许它显示错误。

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

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

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

答案 1 :(得分:0)

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

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

感谢您的回复和帮助。