我有一个 Excel 文件,其中有一个在 VB 中调用 Shell 命令的按钮:
Shell(ThisWorkbook.Path & "\python_script.bat", vbNormalFocus)
Shell 命令调用上面运行 Python 脚本的批处理文件:
python python_script.py
所有相关文件(Excel文件、批处理文件、数据文件、Python文件)都位于同一目录中,称之为sample_program
,因为我正在为其他人构建这个,我想让他们简单地解压缩并运行它。
在 Excel 中,测试此功能时,我单击按钮,然后收到此错误:
C:\Users\<user_name>\Documents>python python_script.py
python: can't open file 'python_script.py': [Errno 2] No such file or directory
由于某种原因,尽管所有这些文件都位于同一位置,但 cmd.exe 正在从我的用户目录运行:C:\Users\<user_name>\Documents
我不希望 cmd.exe 使用此路径;我希望它使用path\to\sample_program
目录。
如何让它使用相对路径,以便当我将此文件夹传输给其他人,并且他们将其放置在任何地方时,它将作为一个独立的单元工作?
最佳答案
如果 path\to\sample_program
与您的主驱动器位于同一驱动器上,请尝试此操作
Shell "cmd.exe /k cd " & ThisWorkbook.Path & "&&python_script.bat"
或者如果path\to\sample_program
不在与您的主驱动器位于同一驱动器上,或者您事先不知道
Shell "cmd.exe /k " & Left(ThisWorkbook.Path, 2) & "&&cd " & ThisWorkbook.Path & "&&python_script.bat"
关于python - 确保从 Excel 运行批处理文件时在 cmd.exe 中使用相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7668942/