VBA运行shell命令但要从不同的目录运行

时间:2017-12-20 21:04:43

标签: excel vba shell

我的代码如下:

ChDir (ActiveWorkbook.Path)
ShellString = "cmd.exe /k cpdf -split " + Chr(34) + ".\" + Replace(File, ".csv", ".pdf") + Chr(34) + " -o temp/x_%%%.pdf"
Shell ShellString, vbNormalFocus

当我运行代码时,它什么都不做,因为它无法找到cpdf.exe。

Cpdf.exe与我的Active Workbook存在于同一路径中。 ChDir命令没有做到这一点。

当我运行代码时,我得到了

  

' CPDF'不被认为是内部命令......

我离开了以下提示:

C:\用户\ ksmith \文件

这告诉我该命令试图从该文件夹运行,这就是它失败的原因。

如何在VBA中从Desired文件夹运行Shell? 有些人建议,ChDir似乎没有做到这一点......

1 个答案:

答案 0 :(得分:0)

ChDir命令仅更改"当前"指定驱动器上的目录,但不影响当前的哪个驱动器"当前"。

所以,如果

  • 你的电脑有一个" C"驱动当前"当前"目录是" C:\ Users \ ksmith \ Documents"和
  • 你还有一个" L"驱动当前"当前"目录是" L:\ abc \ def", 和
  • 包含工作簿的目录是" L:\ Temp1 \ Temp2"

然后执行

ChDir ActiveWorkbook.Path

将改变"当前" " L"的目录开车到" L:\ Temp1 \ Temp2",但是"当前"驱动将继续是" C"和C驱动器"当前"目录将继续是" C:\ Users \ ksmith \ Documents"。

因此,您还需要更改"当前"驾驶。如果你有一个映射驱动器(即它不能使用UNC指定的驱动器),你可以使用:

ChDrive ActiveWorkbook.Path
ChDir ActiveWorkbook.Path