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

使用xlwings通过VBA调用RunPython无法生成日志文件

问题解决:xlwings通过VBA调用Python时日志文件不生成

问题原因

通过xlwings的RunPython调用Python代码时,Python的工作目录并非Excel文件所在目录,而是Excel程序的默认启动目录(比如C:\Users\<你的用户名>\Documents)。你用相对路径'Prime_Portal.log'创建日志,文件实际生成在了这个默认目录里,而非你预期的Excel同目录,所以看起来像是没有生成。

而直接运行Python脚本或从其他Python文件调用时,工作目录是脚本所在目录,因此日志能正常生成在预期位置。

解决方案

方案1:在Python中指定绝对路径(推荐)

修改Python函数,通过os模块获取脚本所在目录,拼接日志文件的绝对路径,确保日志生成在Excel与Python脚本的共同目录:

def VBA_log_test(log_value):
    import logging
    import os
    # 获取当前Python脚本的绝对路径
    script_path = os.path.abspath(__file__)
    # 提取脚本所在目录
    script_dir = os.path.dirname(script_path)
    # 拼接日志文件的完整路径
    log_file_path = os.path.join(script_dir, 'Prime_Portal.log')
    
    logging.basicConfig(filename=log_file_path, encoding='utf-8', level=logging.DEBUG, filemode='w')
    logging.debug('Input Array:\n' + str(log_value))

方案2:在VBA中切换工作目录

在调用RunPython前,通过ChDir将Excel的工作目录切换到当前文件所在目录,让Python继承这个路径:

Sub Test_Python_Logfile()
    Debug.Print "Macro Test Started"
    
    Dim python_input As String
    ' 切换到当前Excel文件所在目录
    ChDir ThisWorkbook.Path
    
    python_input = "import testing2; testing2.VBA_log_test('VBA TEST')"
    
    Debug.Print "Python Command = " & python_input
    RunPython python_input
    
    Debug.Print "Macro Test Completed"
End Sub

验证

如果你之前的日志已经生成,可以去Excel默认启动目录(比如C:\Users\<你的用户名>\Documents)查找Prime_Portal.log,里面应该包含VBA TEST的日志内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:25:04