【发布时间】:2018-05-21 10:17:41
【问题描述】:
我有一个要在 VBA 中修复的代码,这是一种我正在学习的语言。该代码从网络驱动器调用外部 exe 文件。该 exe 最近从 V5.0 更新到 V5.3,从那以后,目录就成了一个问题。这是从 VBA 代码调用可执行文件的方式:
Sub RunExecutable()
Dim wsh As Object
SetCurrentDirectory "\\<path>\"
Statusnum = wsh.Run(Command:="program.exe ""\\<path>\inputfile.gdp""", WindowStyle:=1, waitonreturn:=True)
这曾经完美地工作过。但是由于 program.exe 已更新,从上述脚本运行时,它的某些工作文件的路径已重复。我怀疑 SetCurrentDirectory 行导致了问题。 program.exe 的工作目录应该是,例如:
\\Drive\Folder1\Folder2\Folder3\
但 program.exe 现在想将其工作文件写入此重复路径:
\\Drive\Folder1\Folder2\Folder3\DRIVE\FOLDER1\FOLDER2\FOLDER3\
这在我们的网络上不存在,然后 program.exe 崩溃。如果我创建这些子文件夹供它使用,它会完美运行。
我想知道的是,是否有另一种方法来调用 .exe 文件而不在 VBA 中设置当前目录?因为我设置为当前目录的路径是program.exe尝试运行时复制的路径,我无法修改.exe文件。 .exe 在不被此 VBA 代码调用时工作正常,目录没有问题。
我尝试在这一行中输入 .exe 文件的确切路径:
wsh.Run(Command:="<path>/program.exe .....
并删除 SetCurrentDirectory 命令,但作为响应,我收到一条错误消息,指出无法找到 .exe 文件。
【问题讨论】: