我使用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
感谢您的帮助。
答案 0 :(得分:5)
在某些情况下,Excel似乎没有在RunningObjectTable
中正确注册Excel工作簿,这是一个先决条件,因此可以通过COM找到它。到目前为止,我只注意到从互联网下载的Workbooks的这种行为,因为它首先在Protected View
模式下打开它们(取决于设置)。但是,根据此处的反馈,它似乎也可能在其他情况下发生,可能是由某些加载项或安全设置引起的。
我已经为此v0.3.1
实施了修复,但您现在可以直接从GitHub获取。如果您需要帮助,请告诉我。
更新(2015年1月16日): 包含此修复程序的xlwings v0.3.1刚刚发布。
Update2 (2015年9月13日): xlwings v0.4.0应该以可靠的方式解决这个错误。