-1

当我直接点击.exe文件“PrintUsers.exe”时,输出是正确的。但是当我使用 Shell 通过 VBA 执行此操作时,结果会有所不同。它试图在另一个目录中找到文本文件。为什么?见图:

数字

解决方案:我现在使用: GetModuleFileName(NULL, szEXEPath, 2048) 而不是 GetCurrentDir(buff, FILENAME_MAX);

4

2 回答 2

1

似乎期望在当前目录中PrintUsers.exe找到该文件。doNotEdit.txt

最好的解决方案是更改该程序以在与程序本身所在的目录相同的目录中查找文件,但如果不可能,请在运行程序之前让 Excel 更改当前目录,即插入

ChDir ActiveWorkbook.Path

在调用Shell.


此外,正如 Yahya Hussein 在评论中提到的,路径内的空格可能会导致问题。在您的具体情况下没有任何问题,但是为了确保您将来没有问题,请考虑使用类似的东西

myFile = """" & ActiveWorkbook.Path & "\PrintUsers.exe"""
ChDir ActiveWorkbook.Path
Shell myFile, vbNormalFocus
于 2017-12-18T20:29:18.543 回答
0

解决方案:我现在使用: GetModuleFileName(NULL, szEXEPath, 2048) 而不是 GetCurrentDir(buff, FILENAME_MAX);

于 2017-12-20T19:25:48.483 回答