Excel 使用shell在VBA中运行.exe

Excel 使用shell在VBA中运行.exe,excel,vba,shell,Excel,Vba,Shell,近似 Sub RunExe() 将wsh设置为对象 设置wsh=VBA.CreateObject(“WScript.Shell”) Dim waitOnReturn为布尔值:waitOnReturn=True 将WindowsStyle设置为整数:WindowsStyle=1 将错误代码设置为尽可能长 errorCode=wsh.Run(“C:\dir\dir\dir\dir\dir\dir\dir\dir\My.exe”,WindowsStyle,waitOnReturn) 端接头 我遇到的

近似

Sub RunExe()
将wsh设置为对象
设置wsh=VBA.CreateObject(“WScript.Shell”)
Dim waitOnReturn为布尔值:waitOnReturn=True
将WindowsStyle设置为整数:WindowsStyle=1
将错误代码设置为尽可能长
errorCode=wsh.Run(“C:\dir\dir\dir\dir\dir\dir\dir\dir\My.exe”,WindowsStyle,waitOnReturn)
端接头
我遇到的问题是,cmd行已经在具有不同路径的文件夹中开始。因此,当我运行此代码时,它沿着我知道程序不在的路径启动,我得到错误:

未处理的异常:System.IO.DirectoryNotFoundException:找不到路径的一部分
“C:\dir\dir\dir\dir\dir”。
在System.IO.\uuu Error.WinIOError(Int32 errorCode,字符串maybeFullPath)
位于System.IO.Directory.SetCurrentDirectory(字符串路径)
位于ReadDirectory(字符串目录)
位于Program.Main(字符串[]args)
有没有办法从c:\users开始?还是清理/冲洗溪流?
这是开始运行run->cmd.exe的地方。但由于某些原因,我在vba中有一些内存,并在不同的文件路径中启动。

运行run->cmd.exe的地方是Windows当前目录。您可以使用
ChDir
,例如
ChDir,来改变这一点“C:\dir\dir\dir\dir\dir\dir\dir\dir\dir
我怀疑这不是一个实际的可执行文件路径。碰巧的是,实际路径是否有空格,因此需要引号或转义字符?没有空格或奇怪的字符。通过从开始运行cmd并沿着我指定的路径导航,可以很容易地验证我的路径。但考虑到我从vba运行它时的起点,我必须返回2个文件夹,然后再向前。我也不知道如何从vba将cd..\命令放入shell中。我不知道它是否总是从那个随机文件路径开始。@chrisneilsen在您的示例中,我无法让ChDir编译。我曾尝试调用Shell(“cmd ChDir C:\Users”,vbNormalFocus),但这并没有达到我所期望的效果。这是一个VBA命令-因此它完全且仅
ChDir“C:\dir\dir\dir\dir\dir\dir”
(即不使用Shell)