Макрос в Excel — это записанная последовательность действий, которую программа сохраняет в виде кода на языке VBA (Visual Basic for Applications) и повторяет по одной команде. Проще говоря, вы один раз показываете Excel, что нужно сделать, а дальше он повторяет это сам: по кнопке, сочетанию клавиш или при открытии файла. Ниже разберём, как записать макрос макрорекордером, как выглядит код на VBA, где макросы хранятся и как их безопасно запускать. Опыта в программировании не требуется, достаточно уверенно работать в Excel.
Содержание
Как работает макрос: запись и запуск
У любого макроса два этапа жизни: сначала его создают (записывают действия или пишут код), потом запускают. При записи Excel сам переводит ваши клики и ввод в текст программы на VBA. При запуске он выполняет этот текст сверху вниз — строка за строкой. Создать макрос можно двумя способами:
- Макрорекордер — Excel записывает ваши действия и сам превращает их в код. Подходит новичкам и для простых повторяющихся операций.
- Ручное написание кода на VBA — вы пишете программу сами в редакторе Visual Basic. Нужно, когда логику нельзя «показать мышью»: условия, циклы, диалоги.
Оба способа дают процедуру, которую Excel умеет запускать. Часто их комбинируют: записывают заготовку макрорекордером, а затем дорабатывают код руками.
Подготовка: вкладка «Разработчик»
Инструменты для макросов лежат на вкладке «Разработчик», по умолчанию она выключена. Чтобы её включить: «Файл» -> «Параметры» -> «Настроить ленту» -> поставить флажок «Разработчик» -> «ОК». Появится вкладка с кнопками «Запись макроса», «Макросы» и «Visual Basic».
Запись макроса макрорекордером
Разберём на примере: макрос выбирает ячейку A2 и вписывает в неё текст «Excel».
- Вкладка «Разработчик» -> «Запись макроса».
- Задать имя без пробелов (например
VvodExcel), при желании — сочетание клавиш. В поле «Сохранить в» оставить «Эта книга», нажать «ОК» — с этого момента Excel пишет всё, что вы делаете. - Выбрать ячейку A2, ввести
Excel, нажать Enter. - Нажать «Остановить запись».
Готово. Если открыть редактор VBA (кнопка «Visual Basic» или Alt+F11), в модуле окажется такой код:
Sub VvodExcel()
Range("A2").Select
ActiveCell.FormulaR1C1 = "Excel"
Range("A3").Select
End Sub
Фактический результат запуска: в ячейку A2 записывается текст Excel, курсор переходит на A3. Больше макрорекордер ничего не делает — он повторяет ровно записанное.
Важная особенность: макрорекордер фиксирует каждое действие, включая лишние. Случайный клик не туда тоже попадёт в код. Поэтому последовательность лучше отрепетировать заранее, а длинную задачу разбить на несколько коротких макросов.
Основы VBA: из чего состоит макрос
VBA — это встроенный в Office язык программирования. Знать его целиком не нужно, но базовую структуру макроса стоит понимать, чтобы читать и править код. Любой макрос-процедура начинается с оператора Sub и заканчивается End Sub, между ними — тело: команды, которые выполняются по очереди. Минимальный рабочий пример:
Sub Privet()
MsgBox "Привет, Excel!"
End Sub
Результат: на экран выводится окно с текстом «Привет, Excel!» и кнопкой «ОК». MsgBox — встроенная функция показа сообщений.
Пример с циклом — его макрорекордер сам не запишет. Макрос заполняет ячейки A1:A5 числами от 1 до 5:
Sub ZapolnitNomera()
Dim i As Integer
For i = 1 To 5
Cells(i, 1).Value = i
Next i
End Sub
Результат: в столбце A появляются значения 1, 2, 3, 4, 5. Здесь Dim i As Integer объявляет счётчик, Cells(i, 1) — обращение к ячейке по строке i и столбцу 1 (это A), а For ... Next повторяет команду пять раз.
Ошибки: как выглядят и как чинить
Начинающие чаще всего спотыкаются на обращении к листу по имени. Ошибка тройкой: неверный код -> результат -> исправление. Неверный код (лист называется «Лист1», а в коде — «Отчёт»):
Sub NaList()
Sheets("Отчёт").Range("A1").Value = 100
End Sub
Фактический результат: выполнение прерывается, VBA показывает окно Run-time error '9': Subscript out of range. Excel не нашёл лист с таким именем.
Исправление — обращаться к существующему листу (точное имя) либо к активному:
Sub NaList()
ActiveSheet.Range("A1").Value = 100
End Sub
Теперь в A1 текущего листа записывается 100. Правило: имена листов, книг и диапазонов в коде должны совпадать с реальными — до буквы.
Пользовательские функции (UDF)
На VBA можно создавать собственные функции, работающие прямо в ячейках, как встроенные. Отличие от макроса: функция начинается с Function, принимает аргументы и возвращает значение, но не меняет другие ячейки. Пример — расчёт НДС:
Function NDS(summa As Double, Optional stavka As Double = 0.2) As Double
NDS = summa * stavka
End Function
После сохранения в ячейке можно написать =NDS(1000) и получить 200 (при ставке 20%). Ставку удобно вынести в аргумент: =NDS(1000; 0,22) вернёт 220 — одна функция под разные ставки без правки кода.
Где хранятся макросы
Код живёт не «в ячейках», а в программных модулях книги. Их видно в окне Project Explorer редактора VBA (Ctrl+R, если оно скрыто):
- Обычный модуль («Insert» -> «Module») — основное место для макросов и функций, сюда попадает большинство кода.
- ЭтаКнига (ThisWorkbook) — для макросов, привязанных к событиям книги: открытие, сохранение, закрытие.
- Модуль листа — для событий конкретного листа: изменение ячейки, выбор диапазона.
- Личная книга макросов (PERSONAL.XLSB) — скрытая книга, открывающаяся вместе с Excel. Её макросы доступны во всех файлах — удобно для универсальных инструментов.
Безопасность: формат .xlsm и настройки макросов
Макросы — это исполняемый код, поэтому у Excel есть защита. Важны два момента.
Первое — формат файла. Обычный .xlsx макросы не хранит: сохранив книгу с кодом в .xlsx, вы их потеряете. Файлы с макросами сохраняют в формате .xlsm (книга с поддержкой макросов) или, реже, .xlsb.
Второе — настройки запуска: «Файл» -> «Параметры» -> «Центр управления безопасностью» -> «Параметры центра управления безопасностью» -> «Параметры макросов». Рекомендуемый по умолчанию вариант — «Отключить макросы VBA с уведомлением»: код не запускается сам, но при открытии файла появляется панель с кнопкой «Включить содержимое».
Отдельно: файлы с макросами из интернета или почты Excel по умолчанию блокирует полностью (вместо кнопки «Включить» — предупреждение о заблокированном источнике). Это защита от вредоносных макросов, поэтому запускать чужой код стоит только из доверенных источников.
Способы автоматизации: что выбрать
Макрорекордер и ручной VBA — не единственные инструменты. Когда какой способ уместен:
| Способ | Когда использовать | Плюсы | Минусы |
|---|---|---|---|
| Макрорекордер | Простые повторяющиеся действия, которые легко «показать мышью» | Не нужен код, быстро | Не умеет условия и циклы, пишет лишнее |
| VBA вручную | Логика с условиями, циклами, диалогами, обработкой ошибок | Полный контроль, любые задачи | Нужно освоить язык |
| Power Query | Загрузка, чистка и объединение данных из разных источников | Без кода, обновляется по кнопке | Не для действий над интерфейсом |
| Office Scripts | Автоматизация в Excel для веба и связка с Power Automate | Работает в облаке, язык TypeScript | Нет в офлайн-версии, отдельный язык |
Выводы
- Макрос — это сохранённая последовательность действий в виде кода VBA, которую Excel повторяет по одной команде; создать её можно записью или вручную.
- Макрорекордер подходит для простых операций и сам генерирует код, но не умеет условия и циклы — их пишут на VBA.
- Любой макрос — это блок от
SubдоEnd Sub; имена листов и диапазонов должны точно совпадать с реальными, иначе будетRun-time error '9'. - Файлы с макросами сохраняют только в формате .xlsm; в обычном .xlsx код теряется.
- Безопасность включена по умолчанию: код не запускается сам, а файлы из интернета блокируются — запускайте только доверенные макросы.
Где применяется / связь с практикой
Навык автоматизации полезен далеко за пределами таблиц. Аналитики автоматизируют сбор отчётов, бухгалтеры — расчёты и выгрузки, а понимание того, как макрос обращается к данным и повторяет операции, — первый шаг к работе с базами данных. Логика «описать процесс -> формализовать -> повторять по команде» одинакова и для макроса, и для запроса к БД.
Если хочется системно освоить работу с данными и требованиями, посмотрите курс «Системный аналитик. Basic»: там разбирают, как формализовать процессы и работать с данными — Excel-макросы к этому удобная подготовка. А чтобы оценить формат без обязательств, начните с бесплатных вебинаров — на них можно вживую посмотреть, как устроена работа аналитика.
Смежные темы: Макросы: описание и лучшие приложения для них, СУБД: определение и лучшие приложения.
FAQ
Можно ли отменить действие макроса через Ctrl+Z?
Нет, изменения макроса из истории отмены не откатываются. Перед запуском незнакомого макроса сохраните копию файла.
Почему при открытии файла с макросами появляется жёлтая панель с предупреждением?
Это штатная защита: Excel не запускает код автоматически. Если файл из доверенного источника, нажмите «Включить содержимое» — для файлов из интернета кнопки может не быть, тогда источник нужно разблокировать в свойствах файла.
Обязательно ли учить VBA, чтобы пользоваться макросами?
Нет. Для простых повторяющихся действий хватает макрорекордера. VBA нужен, когда появляются условия, циклы или диалоги, — то есть логика, которую нельзя просто «показать мышью».



