你可以在除第一个之外的Excel实例中用Excel调用Python吗?

时间:2015-06-01 00:09:51

标签: python excel vba xlwings

这个问题是从Excel调用Python。在VBA中,您可以执行RunPython("import mymodule; mymodule.my_function()")

在Python中你会有类似的东西,

from xlwings import Workbook, Sheet, Range

    def my_function():
        wb = Workbook.caller() # Create reference to calling Excel file
        Range('A1:C3').clear_contents() # Clear some cells

我的问题是,这适用于您的第一个Excel实例。但是如果您打开了两个实例,并且您尝试在第二个实例中运行代码,则会出现一个引发异常,说“无法建立连接!确保调用工作簿是活动的,并且是在第一个Excel实例中打开。“

所以看起来这只是设计用于第一个实例。有没有解决的办法?你能在Python脚本中找出你所在的实例吗?用户希望运行在多个实例中调用Excel的VBA宏。

1 个答案:

答案 0 :(得分:0)

原则上,xlwings可以处理2个实例。但是,根据您的安全设置,它可能会将从互联网下载或存储在网络驱动器上的文件视为不安全和"沙盒"他们。只有xlwings在第一个实例中运行时才能访问这些文件。 如果这听起来像您的问题,那么降低安全设置可能会解决问题。另请参阅此答案here