Вот как создать файл xlsm, который будет содержать макрос, который будет запускаться автоматически каждый раз, когда вы открываете книгу (если папка файла установлена в качестве надежного расположения):
1) Создать Файл Excel, вставьте новый модуль и введите этот код vba:
Sub Auto_Open()
MsgBox "Hello World!"
End Sub
Сохраните файл как xlsm.
2) Извлеките код vba с помощью утилиты vba_extract.py для xlsxwriter.
3) Запустите следующий скрипт python:
import xlsxwriter
# Create a workbook and add a worksheet.
workbook = xlsxwriter.Workbook('test.xlsx')
workbook.filename = 'test.xlsm'
worksheet = workbook.add_worksheet()
# Inject the bin file we extracted earlier
workbook.add_vba_project('./vbaProject.bin')
# Finally write the file
workbook.close()
Это создаст файл с внедренным в него макросом и будет автоматически запускаться каждый раз, когда вы его открываете.
Вывод:
Если у вас все еще есть проблемы, я бы порекомендовал вам проверить 2 вещи: во-первых, если ваш макрос начинается с ключевого слова Sub Auto_Open()
, и во-вторых, если вы установили папку, в которой вы открываете файл как надежное расположение (поскольку по умолчанию офисные приложения блокируют запуск любых макросов, если они содержат вредоносный код).