我使用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没有更快响应。
我觉得我在这里撞墙......我做错了什么?
答案 0 :(得分:0)
那么那就是你的解决方案。
如果被叫程序没有完成,Access(或更确切地说是Shell.Run)将等待它。等等。
您可以尝试为intWindowStyle
传递1而不是0来显示程序窗口。也许它显示错误。
此命令行的这一部分看起来很奇怪:
test RD#"F:\AA\Bicom 5\SimplyTax\Response\STResponse.txt"
RD#
真的应该是这样的吗?
答案 1 :(得分:0)
很遗憾,我没有找到解决这个问题的办法。看起来有问题的程序无法处理带空格的文件路径...
我只是在我的应用程序中添加了一个新字段,它需要一个没有空格的文件路径,并告诉他们将程序复制到该路径。现在它没有问题。
感谢您的回复和帮助。