8

我正在使用 xlwings 从 Excel 调用 python。我发现在运行我的宏时,Excel 会关闭并重新打开以运行代码。它运行正常,但会减慢速度。此外,如果 Excel 文件未保存,则会出现一个对话框,提示该文件已打开并且我将丢失未保存的更改。

有没有办法在不重新打开 Excel 文件的情况下调用 python?

这是我的 python 代码(在 loaddf.py 中):

from xlwings import Workbook, Range, Sheet

def my_macro():
    wb = Workbook.caller()
    Range('A1').value = Range('A1').value + 1

我的 Excel 文件中的 VBA 代码:

Sub loaddfsub()
    RunPython ("import loaddf; loaddf.my_macro()")
End Sub

谢谢您的帮助。

4

1 回答 1

5

似乎在某些情况下,Excel 没有在 中正确注册 Excel 工作簿,这RunningObjectTable是一个前提条件,因此可以通过 COM 找到它。到目前为止,我只注意到从 Internet 下载的工作簿的这种行为,因为它Protected View首先以模式打开它们(取决于设置)。但是,根据这里的反馈,它似乎在其他情况下也可能发生,可能是由某些加载项或安全设置引起的。

我已经为此实现了一个修复,它将出现在 中v0.3.1,但您现在可以直接从GitHub获取它。如果您需要帮助,请告诉我。

更新(2015 年 1 月 16 日):包含此修复程序的 xlwings v0.3.1 刚刚发布。

更新 2(2015 年 9 月 13 日): xlwings v0.4.0 应该最终以可靠的方式修复此错误。

于 2015-01-14T23:47:08.020 回答