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

问题描述 投票:0回答:1

我的代码如下:

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:\ Users \用户ksmith \文件

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

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

excel vba shell
1个回答
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 \文件”。


因此,您还需要更改“当前”驱动器。如果您有一个映射驱动器(即它不能与UNC指定的驱动器一起使用),您可以使用以下方法执行此操作:

ChDrive ActiveWorkbook.Path
ChDir ActiveWorkbook.Path
© www.soinside.com 2019 - 2024. All rights reserved.