使用VBA调用Python脚本时突发执行错误70:权限被拒绝
错误70(Permission Denied)原因排查与解决办法
可能的原因
- 目标文件被占用锁定:Excel文件
Capacity planning GP 2022 (1).xlsm若被其他程序(含Excel自身)以独占模式打开,Python的pd.read_excel无法读取;或生成的names_cont_dates.csv正处于打开状态,导致无法写入。 - 目录权限不足:脚本运行的当前目录(多为Excel文件所在目录)被设为只读,或当前用户无该目录的读写权限。
- Python解释器权限不匹配:VBA调用的Python解释器与Excel的运行权限不一致(如Excel以管理员身份运行,Python以普通权限运行,反之亦然),导致无法访问文件。
- 安全软件/组策略拦截:杀毒软件、防火墙或系统组策略限制了VBA通过Shell执行外部程序(Python)的权限。
- 相对路径失效:Excel文件或Python脚本被移动,相对路径指向的文件不存在,部分系统会将此误报为权限拒绝错误。
解决办法
- 解除文件锁定:
- 关闭所有打开的
Capacity planning GP 2022 (1).xlsm和names_cont_dates.csv文件,确保无程序占用。 - 若Excel文件是当前运行VBA的文件,修改Python代码使用绝对路径指向该文件,并在Excel中取消“以只读方式打开”的设置。
- 关闭所有打开的
- 修复目录权限:
- 右键Excel文件所在目录→属性,取消“只读”勾选,确认当前用户拥有读写权限。
- 在Python代码中改用绝对路径,示例:
file = r'C:\你的文件实际路径\Capacity planning GP 2022 (1).xlsm' # ... new_df1.to_csv(r'C:\你的文件实际路径\names_cont_dates.csv')
- 统一运行权限:
- 右键Excel选择“以管理员身份运行”后执行宏,或确保Python解释器与Excel的运行权限一致。
- 排查安全限制:
- 临时关闭杀毒软件/防火墙,测试是否为拦截导致。
- 检查系统组策略,确保未禁止VBA执行Shell命令(路径:用户配置→管理模板→Microsoft Office→Office宏设置)。
- 修正路径配置:
- 在VBA的Shell命令中使用Python脚本的绝对路径,示例:
Shell """C:\Python安装路径\python.exe"" ""C:\脚本实际路径\你的脚本.py""", vbNormalFocus
- 在VBA的Shell命令中使用Python脚本的绝对路径,示例:
内容的提问来源于stack exchange,提问作者ikramzouaoui
相关产品推荐
相关产品推荐

