python - 确保从 Excel 运行批处理文件时在 cmd.exe 中使用相对路径

标签 python excel vba batch-file

我有一个 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/

相关文章:

sql - 使用日期字段的月份部分返回字符串

excel - For循环删除所有行

python - 无法解决 'No module named Appium' 错误

excel - 将给定单元格中的超链接换行

Excel 高级过滤具有多个可接受的数据组合的多列

excel - 我的 VBA 代码未将 csv 文件上传到 Azure 中的 ADLS

excel - VBA通过构造继承,构造函数不起作用?

python - 将 "If Else"语句转换为 JSON 文件

python - 什么是 `scipy.i` ?

python - Nodeenv 抛出 python virtualenv 不可用