У меня возникла проблема с получением xlwings для запуска макроса из Python. Несмотря на следующий код из документации xlwings, я не могу заставить xlwings выполнять макрос Excel. Например, в книге Excel «Book.xlsm»:Возможная ошибка? xlwings не может запускать макрос Excel?
' in Excel workbook Book.xlsm
Sub Test()
Set ws = Worksheets("ABC")
ws.Range("A1").Value = 10
End Sub
Этот макрос работает ОК в Excel. Но когда я пытаюсь вызвать этот модуль из Python, он не работает:
# in Python
import xlwings
wb = xlwings.Book('C:\\Book.xlsm')
wb.macro('Test')
print('done.')
Нет сообщений об ошибках. Код Python запускается и заканчивается, печатая сообщение «done». но когда я проверяю рабочий лист ABC, ничего не написано. Обратите внимание, что я могу подключиться к этой книге и изменить значения ячеек с помощью xlwings. Я просто не могу заставить его запустить тестовый макрос.
Также обратите внимание, что раньше я использовал гораздо более старые xlwings (до 0.7.0, я думаю), и он запускает мои макросы без проблем. Сейчас я использую версию 0.10.0.
спасаете вы книгу после запуска макроса из Python? Является ли макрос в пространстве имен рабочего листа «ABC» или в пространстве имен книги? – cco
т. Е. Это модуль VBA или нет? –
Да, тестовая подпрограмма находится в модуле VBA. Надеюсь, я прав. Я открываю редактор VBA, затем выбираю Insert Module под названием книги. Подпрограмма Test находится в модуле 1, а не на любом листе. Я попытался с помощью несуществующего имени подпрограммы (например, «XYZ») в Python, такие как: wb.macro («XYZ») но мой код все еще работает и выходит без каких-либо сообщений об ошибках. – Chris