直接运行.exe&;通过Shell VBA返回不同的结果

直接运行.exe&;通过Shell VBA返回不同的结果,vba,excel,ex,Vba,Excel,Ex,当我直接单击.exe文件“PrintUsers.exe”时,输出是正确的。 但是,当我使用Shell通过VBA执行此操作时,结果是不同的。它尝试在另一个目录中查找文本文件。为什么?见图: 解决方案:我现在使用:GetModuleFileName(NULL,szexpath,2048)代替GetCurrentDir(buff,FILENAME_MAX) 似乎PrintUsers.exe希望在当前目录中找到文件doNotEdit.txt 最好的解决方案是更改该程序,以便在程序本身所在的同一目录中查

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


解决方案:我现在使用:GetModuleFileName(NULL,szexpath,2048)代替GetCurrentDir(buff,FILENAME_MAX)

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

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

ChDir ActiveWorkbook.Path
在调用
Shell
之前


此外,正如叶海亚·侯赛因(Yahya Hussein)在一篇评论中提到的,道路内部的空间可能会引发问题。在你的具体情况中没有任何,但是,为了确保你今后没有问题,考虑使用类似“< /P>”之类的东西。
myFile = """" & ActiveWorkbook.Path & "\PrintUsers.exe"""
ChDir ActiveWorkbook.Path
Shell myFile, vbNormalFocus

解决方案:我现在使用:GetModuleFileName(NULL,szexpath,2048)代替GetCurrentDir(buff,FILENAME_MAX)

看起来链接没有通过。什么链接?请添加一些关于您正试图实现的目标的解释活动工作簿路径返回了什么?如果其中有空格,您可能会遇到一些问题。如果是这样的话,用Chr(34)环绕两边的整个字符串,对应于“为什么每次我编辑图像以显示它时,你都要编辑问题以删除图像?!?对不起,我正在更新图像以使其更清晰。”。