Раньше я использовал информацию в этом вопросе для запуска сценария VBA, который выполняет базовое форматирование после запуска кода Python.
Как мне вызвать макрос Excel из Python с помощью xlwings?
В частности, я использовал первое обновление.
from xlwings import Workbook, Application
wb = Workbook(...)
Application(wb).xl_app.Run("your_macro")
Сейчас я использую v0.10.0 xlwings, и этот код больше не работает.
Когда я пробую предложенный новый код для версии 0.10.0:
wb.app.macro('your_macro')
Python возвращает объект:
<xlwings.main.Macro at 0x92d3198>
и мой макрос не запускается в Excel.
Документация (http://docs.xlwings.org/en/stable/api.html#xlwings.App.macro) есть пример пользовательской функции, но у меня есть скрипт, который делает несколько вещей в Excel (форматирует данные, которые я вывожу из python, добавляет некоторые формулы в лист и т. д.), которые я хочу запустить.
Я уверен, что мне не хватает чего-то основного здесь.
Обновление По предложению Феликса Цумштейна я попытался:
import xlwings as xw
xlfile = 'model.xlsm'
wb = xw.Book(xlfile)
wb.macro('your_macro')
Это возвращает то же самое, что и wb.app.macro('your_macro'):
<xlwings.main.Macro at 0x92d05888>
и скрипт VBA не запускается внутри Excel.