从Excel vba shell更改工作目录

5 excel vba excel-vba

为了工作,我正在尝试从Excel VBA宏运行Python脚本.

宏如下 -

Sub Plot()

Shell "C:\Users\maheshda\AppData\Local\Continuum\Anaconda3\python.exe C:\Users\maheshda\Tool\Tool\Main.py", vbNormalFocus

End Sub
Run Code Online (Sandbox Code Playgroud)

从命令行运行时脚本运行得很好,但不幸的是,因为我在Python脚本中使用相对文件路径(在某一点上,我从'../Input/'调用文件)脚本崩溃,因为当前工作目录不是C:\ Users\maheshda\Tool\Tool.

如何从宏中更改工作目录?谢谢!

Wik*_*żew 7

这在VBA中是一项微不足道的任务,使用ChDir:

ChDir声明

更改当前目录或文件夹.

句法

ChDir 路径

必需的path参数是一个字符串表达式,用于标识哪个目录或文件夹成为新的默认目录或文件夹.路径可以包括驱动器.如果未指定驱动器,请ChDir更改当前驱动器上的默认目录或文件夹.

由于您main.py居住C:\Users\maheshda\Tool\Tool\,请调用Python脚本之前使用以下权限:

ChDir "C:\Users\maheshda\Tool\Tool"
Run Code Online (Sandbox Code Playgroud)

或者(因为它在驱动器C上):

ChDir "\Users\maheshda\Tool\Tool"
Run Code Online (Sandbox Code Playgroud)

  • 注意 - 如果当前目录与要切换到的目录位于不同的驱动器上,则在使用`ChDir()之前需要使用`ChDrive()`. (5认同)
  • 并注意:您可以使用 [`CurDir`](https://msdn.microsoft.com/en-us/library/office/gg251649.aspx) 检查哪个目录设置为当前目录。 (2认同)