例如某个xlsm文件中的模块1中有宏
Sub 宏1()
'
' 宏1 宏
'
'
Range("G3").Select
ActiveCell.FormulaR1C1 = "你好"
Range("G9").Select
End Sub
那么怎么通过xlwings调用这宏呢:
首先要安装winPython或者其他Python,pip install xlwings,winPython默认安装xlwings。
然后
import xlwings as xw
vba_book=xw.Book(r"test.xlsm")
marco1=vba_book.macro("模块1.宏1")
marco1()
注意,如果宏里面的函数 function或者过程sub有输入参数或输出参数,那么这个宏一定要写在模块1当中。
例如模块1中的函数
Function MySum(x As Double, y As Double) As Double
MySum = x + y
End Function
Sub ShowMsgBox(msg As String)
MsgBox msg
End Sub
那么Python中的调用函数就是
import xlwings as xw
vba_book = xw.Book("xl/vba.xlsm")
mysum = vba_book.macro("Module1.MySum&