You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA调用Python脚本无法访问文件,但直接运行Python脚本正常

问题解决:VBA调用Python脚本无法找到目标Excel文件

问题核心原因:
直接运行Python脚本时,脚本的工作目录是它自身所在的文件夹,因此用相对路径Sales_Values.xlsx能正常定位文件;但VBA通过Shell调用时,默认工作目录是Excel的默认启动路径(比如系统「我的文档」文件夹),和Python脚本所在目录不一致,导致相对路径失效。

解决方案

  • 方案1:Python脚本中使用动态绝对路径
    避免硬编码路径,自动获取脚本所在目录拼接目标文件路径:

    import os
    # 获取当前Python脚本所在文件夹的绝对路径
    script_dir = os.path.dirname(os.path.abspath(__file__))
    # 拼接目标Excel文件的完整路径
    Control = os.path.join(script_dir, "Sales_Values.xlsx")
    xldata = pd.read_excel(Control, engine='openpyxl')
    
  • 方案2:VBA中先切换工作目录再调用
    在执行Shell命令前,先切换到Python脚本所在目录:

    Dim pythonScriptPath As String
    Dim scriptDir As String
    ' 替换为你的Python脚本实际路径
    pythonScriptPath = "C:\YourFolder\your_python_script.py"
    ' 提取脚本所在目录
    scriptDir = Left(pythonScriptPath, InStrRev(pythonScriptPath, "\"))
    
    ' 切换工作目录到脚本所在文件夹
    ChDir scriptDir
    ' 调用Python脚本(若python未加入环境变量,需写完整路径如"C:\Python39\python.exe")
    Shell "python """ & pythonScriptPath & """", vbNormalFocus
    
  • 方案3:通过CMD命令指定工作目录
    利用CMD的切换目录命令,一次性完成目录切换与脚本执行:

    Dim pythonScriptPath As String
    pythonScriptPath = "C:\YourFolder\your_python_script.py"
    Dim cmdCmd As String
    ' 先切换到脚本目录,再执行Python脚本
    cmdCmd = "cmd /c cd /d """ & Left(pythonScriptPath, InStrRev(pythonScriptPath, "\")) & """ && python """ & pythonScriptPath & """"
    Shell cmdCmd, vbNormalFocus
    

内容的提问来源于stack exchange,提问作者HG73

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 11:55:56