Después de mucho luchar ya dimos con la respuesta de este contratiempo que agunos usuarios de este sitio web tienen. Si tienes algo que compartir no dudes en aportar tu conocimiento.
Solución:
Esto aún no está implementado, pero hay un problema abierto para ello, consulte aquí. Mientras tanto, puede solucionarlo así (esto es para Windows, pero la versión para Mac funciona en consecuencia, vea nuevamente en el problema):
from xlwings import Workbook
wb = Workbook(...)
wb.application.xl_app.Run("your_macro")
actualizar: para versiones más recientes, tienes que hacer:
from xlwings import Workbook, Application
wb = Workbook(...)
Application(wb).xl_app.Run("your_macro")
actualizar 2: Esta funcionalidad ahora se admite de forma nativa desde >=v0.7.1. Supongamos que hay una función VBA YourMacro
que suma dos números:
>>> import xlwings as xw
>>> wb = xw.Book(r'C:pathtomybook.xlsm')
>>> your_macro = wb.macro('YourMacro')
>>> your_macro(1, 2)
3.0
Tuve problemas cuando actualicé xlwings a la versión 0.9+. Para ejecutar vba macro con xlwings, utilicé el código escrito a continuación para ejecutar macros dentro del libro de trabajo personal (PERSONAL.XLSB). No me funciono el codigo actualizado no2 de Felix, por macro dentro del libro de trabajo personal.
import xlwings
wb = xw.Book(excel_file_path)
app = wb.app
# into brackets, the path of the macro
macro_vba = app.macro("'PERSONAL.XLSB'!my_macro")
macro_vba()
Espero que ayude
Acuérdate de que tienes la capacidad de comentar tu experiencia si diste con la respuesta.