有没有一种方法可以在不重新打开Excel文件的情况下使用xlwings调用python?

有没有一种方法可以在不重新打开Excel文件的情况下使用xlwings调用python?,python,xlwings,Python,Xlwings,我使用xlwings从Excel调用python。我发现在运行宏时,Excel会关闭并重新打开以运行代码。它工作正常,但它会减慢速度。此外,如果Excel文件未保存,一个对话框将显示该文件已打开,并且我将丢失未保存的更改 有没有办法在不重新打开Excel文件的情况下调用python 这是我的python代码(在loaddf.py中): 以及Excel文件中的VBA代码: Sub loaddfsub() RunPython ("import loaddf; loaddf.my_macro(

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

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

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

以及Excel文件中的VBA代码:

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

感谢您的帮助。

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

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

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

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

这显然不是预期的行为-您是否面临此错误?有同样的问题。Python 3.4和Excel 2013 15.0.4675。1001@JoeMcGrath您使用的是哪个Python发行版?xlwings版本0.3.0?Excel 32或64位?@JoeMcGrath另外,您能给我发送一份显示此行为的Excel工作簿和python代码的示例吗?我的电子邮件在GitHub上:@FelixZumstein Python 3.4.0版Windows版,大约一年前下载。Excel是32位的(让我惊讶的是我以前从未检查过)。将发送电子邮件文件。谢谢你的帮助!谢谢很高兴赏金获得了汽车奖。安全问题可能是由于它安装在网络驱动器上造成的?是的,这很有意义。。。文件是否每次打开时都会在
受保护视图中打开?
不会。这就是为什么我对你最初的建议感到困惑的原因。我更新到你的最新版本,没有问题。没有时间使用它,但已验证它是否正常工作。
Sub loaddfsub()
    RunPython ("import loaddf; loaddf.my_macro()")
End Sub