从 Excel "No module named..." 错误调用 xlwings

Calling xlwings from Excel "No module named..." Error

我正在尝试学习使用 xlwings 0.9.2 从 Excel VBA 启动 Python 脚本的技巧。根据文档,我需要将 PYTHONPATH 更改为我的 py 文件的路径。我看过这个问题的几个版本和各种答案,但 none 已经解决了我的具体情况。我有一个基本的测试模块 "module1.py" 和一个位于桌面上的 Excel 文件 "Book2.xlsm",它有一个 运行 这个宏的按钮:

Sub macro1()
RunPython ("import module1.py; module1.run_all()")
End Sub

模块 1 是这样的:

import xlwings as xw

def run_all():
    wb.Book.caller()
    xw.sheets("Sheet1").range("A1").value = "Done!"
    return

然后我导入 "xlwings.bas" 文件并编辑 VBA 代码以读取 PYTHONPATH = "C:\Users\bwamp\Desktop\module1\module1,它指的是包含 "module1.py" 的子文件夹(完整路径:"C:\Users\bwamp\Desktop\module1\module1\module1.py",为清楚起见)。按 运行 macro1 按钮,出现以下错误:


错误

回溯(最近调用最后):

中的文件“”,第 1 行

ImportError: 没有名为 'module1.py' 的模块; 'module1' 不是包

按 Ctrl+C 将此消息复制到剪贴板。

好的

知道我做错了什么吗?

您有两个错误:您需要导入没有 .py 结尾的模块:

Sub macro1()
RunPython ("import module1; module1.run_all()")
End Sub

它是 xw.Book.caller() 而不是 wb.Book.caller()

我有同样的错误。通过降级到 xlwings 版本 0.7.2

解决