当从vba访问shell时远程启动写入我的文档

时间:2017-04-23 21:16:32

标签: c++ vba ms-access

是的,这是一个有趣的。我有一个启动.exe的vba脚本.exe是一个写入文件的程序。这些文件都在同一目录中,它们都使用当前目录作为读/写/启动的输入和输出。 .exe写入当前目录很好,但是当我在vba中通过shell启动它时,它会写入我的文档。我真的不知道它为什么这样做,我知道它不应该是。

1 个答案:

答案 0 :(得分:0)

假设包含VBA代码的MSAccess数据库位于包含EXE文件的同一目录中,您可以通过将以下行添加到VBA代码来将当前目录更改为:

ChDir Left(CurrentDB.Name, InstrRev(CurrentDB.Name, "\") - 1)

这应该在Shell陈述之前的某个地方完成。

如果数据库与EXE不在同一目录中,则可能需要对路径进行硬编码。例如,如果您的Shell命令当前类似于

Shell "C:\abc\def\xyz.exe"

然后你可以使用

ChDir "C:\abc\def"
Shell "xyz.exe"  ' No *need* to include path information anymore
                 ' because it is now in "current" directory

但是,如果您可以访问EXE的代码,最好的解决方案是将EXE更改为与EXE本身位于同一目录中的文件进行读/写,而不是从“当前”目录。