Добавить в корзинуПозвонить
Найти в Дзене
Анастасия Софт

🧙‍♂️ Создание макросов Excel с использованием Python

...или как стать заклинателем Excel-файлов без VBA Когда мы слышим слово «макрос», большинство представляет себе старый-добрый VBA (Visual Basic for Applications). Но давай честно — синтаксис как у 90-х, ошибки как у джунов, а отладки как у квеста без карты. А теперь представь: ты можешь писать макросы на Python! Прекрасный, читаемый, удобный Python. Без "Dim" и "End Sub". Макрос — это набор действий (скрипт), который можно выполнить в Excel автоматически:
– форматирование,
– вычисления,
– вставка графиков,
– открытие файлов и т.д. С помощью Python мы можем создавать файлы Excel с макросами (.xlsm), добавлять туда VBA-код, и — внимание — запускать его из Excel! pip install openpyxl xlwings ⚠️ Важно: xlwings работает только на Windows с установленным Excel! Представим, у нас есть Excel-файл с таблицей. Мы хотим: Создадим файл с таблицей: import pandas as pd
# Данные для таблицы
data = {
'Имя': ['Аня', 'Борис', 'Вася'],
'Продажи': [12000, 15000, 10000],
'Бонус (%)': [10,
Оглавление

...или как стать заклинателем Excel-файлов без VBA

Создание макросов Excel с использованием Python
Создание макросов Excel с использованием Python

🧠 Введение: Python против VBA

Когда мы слышим слово «макрос», большинство представляет себе старый-добрый VBA (Visual Basic for Applications). Но давай честно — синтаксис как у 90-х, ошибки как у джунов, а отладки как у квеста без карты.

А теперь представь: ты можешь писать макросы на Python! Прекрасный, читаемый, удобный Python. Без "Dim" и "End Sub".

🔧 Что такое «макрос в Excel»?

Макрос — это набор действий (скрипт), который можно выполнить в Excel автоматически:

– форматирование,

– вычисления,

– вставка графиков,

– открытие файлов и т.д.

С помощью Python мы можем создавать файлы Excel с макросами (.xlsm), добавлять туда VBA-код, и — внимание — запускать его из Excel!

🔍 Что нам нужно?

Установим нужную библиотеку:

pip install openpyxl xlwings

  • openpyxl — для работы с обычными Excel-файлами (.xlsx).
  • xlwings — для управления Excel изнутри (в том числе макросы, запуск Excel-приложения, вставка VBA).
⚠️ Важно: xlwings работает только на Windows с установленным Excel!

🎯 Реальная задача: автоформат таблицы и добавление кнопки запуска макроса

Представим, у нас есть Excel-файл с таблицей. Мы хотим:

  1. Добавить макрос, который автоформатирует таблицу.
  2. Добавить кнопку, при нажатии на которую этот макрос выполнится.

📁 Шаг 1: Создаём Excel-файл

Создадим файл с таблицей:

import pandas as pd

# Данные для таблицы
data = {
'Имя': ['Аня', 'Борис', 'Вася'],
'Продажи': [12000, 15000, 10000],
'Бонус (%)': [10, 12, 8]
}

df = pd.DataFrame(data)

# Сохраняем в файл формата xlsm (с макросами)
df.to_excel('отчет.xlsm', index=False)

📝 Пока что это просто Excel-файл с таблицей. Но скоро он станет магическим .xlsm.

🔮 Шаг 2: Добавляем макрос с помощью xlwings

Теперь добавим туда настоящий VBA-макрос, который автоматически отформатирует таблицу.

import xlwings as xw

# Открываем созданный файл
wb = xw.Book('отчет.xlsm')

# Добавляем модуль VBA
vba_code = '''
Sub АвтоФормат()
Dim ws As Worksheet
Set ws = ActiveSheet

' Установим автофильтр
ws.Range("A1").AutoFilter

' Сделаем жирный заголовок
With ws.Range("A1:C1").Font
.Bold = True
.Size = 12
End With

' Применим автоширину колонок
ws.Columns("A:C").AutoFit
End Sub
'''

# Добавляем VBA-модуль
wb.api.VBProject.VBComponents.Add(1).CodeModule.AddFromString(vba_code)

🎩 Здесь мы открыли книгу, вставили в неё модуль и написали обычный VBA-код (на Python!).

🎯 Шаг 3: Добавим кнопку на лист

Теперь добавим форму-кнопку, при нажатии на которую выполняется макрос:

# Доступ к активному листу
sheet = wb.sheets[0]

# Добавляем кнопку ActiveX (старой школы, но рабочую)
btn = sheet.api.OLEObjects().Add(
ClassType="Forms.CommandButton.1",
Link=False,
DisplayAsIcon=False,
Left=100, Top=100, Width=100, Height=30
)

# Настраиваем надпись на кнопке
btn.Object.Caption = "Форматировать"

# Привязываем макрос к кнопке
btn.Object.OnAction = "АвтоФормат"

🔘 Кнопка появится на листе. Пользователь кликает — макрос выполняется.

💾 Шаг 4: Сохраняем и закрываем

# Сохраняем файл
wb.save()
wb.close()

Файл отчет.xlsm готов — открываешь, жмёшь кнопку, и всё форматируется. Магия, но Python-версия.

🧪 А можно запустить макрос сразу из Python?

А как же! Вот так:

wb = xw.Book('отчет.xlsm')
wb.macro('АвтоФормат')() # вызов макроса по имени
wb.save()
wb.close()

🧙 Теперь ты управляешь Excel макросами из Python, как повелитель таблиц.

🤯 Подводим итог

Вот что ты теперь умеешь:

✅ Создавать Excel-файлы с макросами (.xlsm)

✅ Добавлять и редактировать VBA-код из Python

✅ Добавлять кнопки на лист Excel

✅ Привязывать кнопки к макросам

✅ Автоматически запускать макросы из Python

🛠 Реальные кейсы использования:

  • 📊 Автоформатирование и стилизация отчётов;
  • 📈 Автогенерация графиков с запуском по кнопке;
  • 🧾 Импорт и экспорт данных с запуском скрипта;
  • 🧹 Очистка и подготовка данных одним нажатием кнопки.

🧠 Хочешь больше?

Если интересно, могу показать:

  • Как вставить пользовательскую форму (UserForm) через Python;
  • Как сделать выпадающие списки или чекбоксы;
  • Как читать содержимое макросов обратно;
  • Или как запрограммировать «живую» панель управления внутри Excel.


Таблицы, VBA и Python — теперь ты командуешь этой армией!