我如何使用xlwings从Python调用Excelmacros?

我已经阅读了xlwings的API文档 ,并在解释器中使用了Workbook和Sheet对象,但我无法弄清楚如何从Python调用macros。

我如何使用xlwings从Python调用Excelmacros?

这还没有实施,但有一个公开的问题,看到这里 。 与此同时,你可以像这样解决这个问题(这是用于Windows的,但是Mac版本可以相应地工作,请参阅这个问题 ):

from xlwings import Workbook wb = Workbook(...) wb.application.xl_app.Run("your_macro") 

更新 :对于更新的版本,你必须这样做:

 from xlwings import Workbook, Application wb = Workbook(...) Application(wb).xl_app.Run("your_macro") 

更新2 :现在本function支持v0.7.1。 我们假设,有一个VBA函数YourMacro总结了两个数字:

 >>> import xlwings as xw >>> wb = xw.Workbook.active() >>> your_macro = wb.macro('YourMacro') >>> your_macro(1, 2) 3.0 

我知道这是一个迟到的答案,但上面所提到的所有方式对我来说都不起作用。 但是我已经find了另一种方法,通过使用xlwings提供的真棒api接口。

这是我用来运行macros的代码:

 xlApp = xw.App(visible=False) wb= xw.books.open('.\\Path\\To\\File.xlsm') a = xlApp.api.Application.Run("macroTest") 

我的macros打开一个MsgBox,并返回值1,只是为了testing,它工作得很好。 尽pipe应该避免使用MsgBox,因为它是在后台打开的。

顺便说一句。 api接口在许多(当不是全部)对象中都是可用的,如果你习惯于VBA编程,那么它是非常强大的。