Где и как искать макросы в Excel: 5 проверенных способов

Макросы в Microsoft Excel — это мощный инструмент автоматизации, который экономит часы рутинной работы. Но что делать, если вы унаследовали файл с макросами от коллеги, забыли название нужного скрипта или просто не знаете, где их искать? Эта статья поможет разобраться, как найти макросы в Excel, даже если вы никогда раньше не работали с VBA (Visual Basic for Applications).

Многие пользователи ошибочно думают, что макросы хранятся"где-то внутри таблицы" как обычные данные. На самом деле они представляют собой программы, спрятанные в специальном редакторе. Мы рассмотрим все возможные способы их обнаружения — от стандартного диалогового окна до продвинутых методов для опытных пользователей. А если вы боитесь случайно запустить опасный код — в статье есть раздел о безопасности макросов.

Прежде чем приступить к поиску, убедитесь, что в вашей версии Excel включена вкладка"Разработчик". Без неё доступ к большинству инструментов работы с макросами будет закрыт. Если этой вкладки нет — не переживайте, мы покажем, как её активировать за 30 секунд.

1. Самый простой способ: окно"Макросы"

Начнём с самого очевидного метода, который работает во всех версиях Excel — от 2010 до 2023. Этот способ не требует знаний программирования и подходит даже для новичков.

Чтобы открыть список всех доступных макросов в текущей книге:

  1. Перейдите на вкладку Вид в верхнем меню
  2. В группе Макросы нажмите кнопку Макросы (или используйте горячие клавиши Alt + F8)
  3. В открывшемся окне вы увидите полный список макросов с указанием их расположения

В этом окне отображаются:

  • 📁 Имя макроса — как он называется в коде
  • 🖥️ Книга — в какой именно файле Excel он хранится (важно, если у вас открыто несколько книг)
  • 📝 Описание — краткое пояснение (если оно было добавлено разработчиком)

Если список пуст, это может означать:

  • ❌ В книге действительно нет макросов
  • 🔒 Макросы отключены в настройках безопасности
  • 📂 Макросы хранятся в личном макросе (Personal.xlsb), который не загружен
📊 Как часто вы используете макросы в Excel?
Никогда не пользовался
Редко, для конкретных задач
Регулярно, для автоматизации
Я сам пишу макросы

2. Поиск через редактор VBA: для продвинутых пользователей

Если стандартного окна макросов недостаточно (например, вам нужно найти код по содержимому), придётся заглянуть в редактор VBA. Это"под капотом" Excel, где хранятся все программы.

Как открыть редактор:

  1. Нажмите комбинацию клавиш Alt + F11
  2. Или перейдите на вкладку РазработчикVisual Basic

В редакторе VBA макросы могут находиться в разных местах:

Расположение Описание Как выглядит в дереве проектов
Обычные модули Самое распространённое место для хранения макросов VBAProject → Модули → Module1
Листы Макросы, привязанные к конкретному листу VBAProject → Листы → Лист1 (Sheet1)
Книга Макросы, срабатывающие при открытии/закрытии файла VBAProject → ЭтотКнига (ThisWorkbook)
Формы Макросы, связанные с элементами пользовательского интерфейса VBAProject → Формы → UserForm1

Чтобы быстро найти нужный макрос в редакторе:

  1. Нажмите Ctrl + F для вызова поиска
  2. Введите известное вам название или часть кода
  3. Убедитесь, что в настройках поиска выбрано Текущий проект

3. Горячие клавиши для быстрого доступа

Опытные пользователи Excel предпочитают работать с макросами через клавиатурные сокращения. Вот самые полезные комбинации:

Основные сочетания:

  • 🔑 Alt + F8 — открыть окно списка макросов
  • 🔑 Alt + F11 — открыть редактор VBA
  • 🔑 F5 — запустить макрос в режиме отладки (в редакторе VBA)
  • 🔑 Ctrl + G — открыть окно Immediate для выполнения команд

Для работы в редакторе VBA:

  • 🔑 F7 — переключиться в окно кода
  • 🔑 Ctrl + R — показать/скрыть окно проектов
  • 🔑 Ctrl + Space — автодополнение кода

Если горячие клавиши не работают:

  • Проверьте, не конфликтуют ли они с другими программами
  • Убедитесь, что фокус находится в правильном окне (Excel или редактор VBA)
  • В некоторых локализованных версиях Excel могут использоваться другие комбинации
Как изменить горячие клавиши для макросов?

Чтобы назначить собственное сочетание клавиш для макроса:

1. Откройте окно макросов (Alt + F8)

2. Выберите нужный макрос и нажмите Параметры

3. В поле Сочетание клавиш введите желаемую комбинацию (например, Ctrl + Shift + M)

4. Нажмите OK и сохраните книгу с поддержкой макросов (.xlsm)

4. Поиск скрытых макросов в личных книгах

Многие пользователи не знают, что Excel может автоматически загружать макросы из скрытой личной книги Personal.xlsb, которая хранится на вашем компьютере. Эти макросы доступны во всех ваших файлах Excel, но не отображаются в стандартном списке.

Как найти личную книгу макросов:

  1. Откройте редактор VBA (Alt + F11)
  2. В дереве проектов найдите VBAProject (PERSONAL.XLSB)
  3. Разверните её — здесь могут храниться модули со скрытыми макросами

Если личной книги нет, но вы хотите её создать:

  1. Запишите любой макрос (например, через Разработчик → Запись макроса)
  2. В окне сохранения выберите Личная книга макросов в поле Сохранить в
  3. После записи файл Personal.xlsb будет создан автоматически

Где физически хранится этот файл:

  • 📁 В Windows 10/11: C:\Users\<Ваше_имя_пользователя>\AppData\Roaming\Microsoft\Excel\XLSTART
  • 📁 В macOS: /Users/<Ваше_имя>/Library/Group Containers/UBF8T346G9.Office/Excel/XLSTART

Открыт ли редактор VBA?|Есть ли в дереве проектов раздел PERSONAL.XLSB?|Проверены ли все модули в личной книге?|Учтена ли возможность скрытых модулей (с атрибутом Private)?-->

5. Поиск макросов по их действиям

Иногда проще найти макрос не по имени, а по тому, что он делает. Например, если вы знаете, что какой-то макрос форматирует ячейки зелёным цветом, можно поискать в коде упоминание этого цвета.

Как искать макросы по функционалу:

  1. Откройте редактор VBA (Alt + F11)
  2. Нажмите Ctrl + F для поиска
  3. Введите ключевые слова, связанные с действием макроса:
    • 🔍 Для форматирования: .Interior.Color, .Font.Bold
    • 🔍 Для работы с файлами: .SaveAs, .Open
    • 🔍 Для копирования данных: .Copy, .PasteSpecial
  • Убедитесь, что поиск ведётся по Текущему проекту
  • Примеры поисковых запросов длячных задач:

    Задача макроса Что искать в коде Пример кода
    Создание диаграммы .AddChart, .ChartType ActiveSheet.Shapes.AddChart(xlColumnClustered)
    Отправка email .SendMail, .Outlook ActiveWorkbook.SendMail"example@mail.com"
    Работа с сводными таблицами .PivotTable, .AddDataField ActiveSheet.PivotTables("СводнаяТаблица1").AddDataField

    Если поиск не дал результатов:

    • Попробуйте синонимы (например, вместо Color ищите Colour)
    • Проверьте регистр букв (VBA чувствителен к регистру в некоторых случаях)
    • Ищите не только английские, но и русские названия свойств

    6. Проверка безопасности перед запуском найденных макросов

    Найти макрос — это только половина дела. Прежде чем его запускать, обязательно проверьте код на наличие потенциально опасных операций. Злоумышленники часто используют макросы для распространения вирусов.

    На что обратить внимание в коде:

    • ⚠️ Работа с файловой системой: команды Kill, Delete, FileCopy могут удалять или изменять файлы
    • ⚠️ Выполнение внешних программ: Shell, WScript.Shell — признак потенциально опасного кода
    • ⚠️ Подключение к сети: WinHttp.WinHttpRequest, MSXML2.XMLHTTP могут использоваться для загрузки вредоносного ПО
    • ⚠️ Изменение реестра: SaveSetting, GetSetting — могут нарушить работу системы
    ⚠️ Внимание: Если вы нашли в коде макроса конструкции вроде ExecuteGlobal, Eval или ExecuteExcel4Macro — это признак крайне опасного кода, который может выполнять произвольные команды. Такие макросы лучше не запускать без глубокой проверки.

    Как обезопасить себя:

    • 🛡️ Перед запуском неизвестного макроса сделайте резервную копию файла
    • 🛡️ Используйте Отладка → Пошаговое выполнение (F8) для проверки кода построчно
    • 🛡️ В настройках Excel (Файл → Параметры → Центр управления безопасностью) установите уровень безопасности не ниже Отключить все макросы с уведомлением

    Если вы не уверены в безопасности кода:

    • Скопируйте подозрительные строки и проверьте их через поисковик
    • Используйте онлайн-сервисы анализа VBA-кода (например, VBA Code Analyzer)
    • Обратитесь за помощью к опытным коллегам или на профильные форумы

    7. Автоматизация поиска: макрос для поиска макросов

    Парадоксально, но для поиска макросов можно использовать... другой макрос! Это особенно полезно, если у вас большая книга с десятками модулей.

    Вот готовый код, который выведет список всех макросов в текущей книге:

    Sub ListAllMacros
    

    Dim vbComp As VBIDE.VBComponent

    Dim codeMod As VBIDE.CodeModule

    Dim lineNum As Long, procName As String

    Dim outputSheet As Worksheet

    Dim rowNum As Long

    ' Создаём новый лист для вывода результатов

    Set outputSheet = ThisWorkbook.Sheets.Add

    outputSheet.Name ="Список макросов"

    outputSheet.Cells(1, 1).Value ="Название макроса"

    outputSheet.Cells(1, 2).Value ="Модуль"

    outputSheet.Cells(1, 3).Value ="Строка"

    rowNum = 2

    ' Перебираем все модули в проекте

    For Each vbComp In ThisWorkbook.VBProject.VBComponents

    If vbComp.Type = vbext_ct_StdModule Or _

    vbComp.Type = vbext_ct_ClassModule Or _

    vbComp.Type = vbext_ct_MSForm Or _

    vbComp.Type = vbext_ct_Document Then

    Set codeMod = vbComp.CodeModule

    lineNum = 1

    ' Ищем начала процедур (Sub и Function)

    Do While lineNum < codeMod.CountOfLines

    procName = codeMod.ProcOfLine(lineNum, vbext_pk_Proc)

    If procName <>"" Then

    outputSheet.Cells(rowNum, 1).Value = procName

    outputSheet.Cells(rowNum, 2).Value = vbComp.Name

    outputSheet.Cells(rowNum, 3).Value = lineNum

    rowNum = rowNum + 1

    lineNum = lineNum + codeMod.ProcCountLines(procName, vbext_pk_Proc)

    Else

    lineNum = lineNum + 1

    End If

    Loop

    End If

    Next vbComp

    ' Форматируем результат

    outputSheet.Columns("A:C").AutoFit

    outputSheet.Rows(1).Font.Bold = True

    End Sub

    Как использовать этот макрос:

    1. Откройте редактор VBA (Alt + F11)
    2. Вставьте этот код в новый модуль (Insert → Module)
    3. Запустите макрос ListAllMacros (F5)
    4. Результат появится на новом листе Список макросов

    Преимущества этого метода:

    • 📊 Получаем structured список всех макросов с указанием их расположения
    • 🔍 Можно искать по названию прямо в Excel (а не в редакторе VBA)
    • 📌 Легко экспортировать список для документации
    ⚠️ Внимание: Этот макрос сам по себе безопасен, но для его работы необходимо включить доступ к объектной модели VBA в настройках безопасности (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройки макросов → Доверительный доступ к объектной модели проектов VBA).

    Часто задаваемые вопросы

    Можно ли найти макросы в Excel Online?

    Нет, Excel Online (веб-версия) не поддерживает выполнение и просмотр макросов. Для работы с VBA вам понадобится настольная версия Excel (2010 или новее). Если файл с макросами открыть в Excel Online, все макросы будут недоступны, хотя сам файл откроется.

    Обходной путь: скачайте файл на компьютер и откройте в настольной версии Excel.

    Почему я не вижу вкладку"Разработчик" в Excel?

    Вкладка Разработчик по умолчанию скрыта. Чтобы её включить:

    1. Перейдите в Файл → Параметры → Настройка ленты
    2. В правой колонке отметьте галочкой Разработчик
    3. Нажмите OK

    После этого вкладка появится в главном меню.

    Как найти макрос, который выполняется при открытии файла?

    Такие макросы хранятся в объекте ThisWorkbook и обычно называются:

    • Workbook_Open — выполняется при открытии файла
    • Workbook_BeforeClose — выполняется перед закрытием
    • Workbook_SheetActivate — при активации листа

    Чтобы их найти:

    1. Откройте редактор VBA (Alt + F11)
    2. В дереве проектов найдите VBAProject → ЭтотКнига (ThisWorkbook)
    3. Проверьте код в этом разделе
    Можно ли искать макросы по дате их создания или изменения?

    Excel не хранит метки времени для отдельных макросов, но вы можете:

    1. Посмотреть дату изменения файла Excel (через свойства файла в проводнике)
    2. Использовать систему контроля версий (например, Git), если файл хранится в репозитории
    3. Добавить в начало каждого макроса комментарий с датой создания вручную:
      ' === Макрос: ИмяМакроса ===
      

      ' Создан: 15.05.2023

      ' Автор: Иванов И.И.

      ' Описание: Форматирует отчёт по продажам

    Как найти макросы, которые запускаются по нажатию кнопки?

    Макросы, привязанные к элементам управления (кнопкам, выпадающим спискам), можно найти так:

    1. На листе Excel найдите элемент управления (кнопку, флажок и т.д.)
    2. Щёлкните по нему правой кнопкой мыши и выберите Назначить макрос
    3. В открывшемся окне вы увидите название привязанного макроса

    Также можно:

    • Посмотреть код элемента в редакторе VBA (в разделе Формы или Листы)
    • Искать в коде упоминания .OnAction — это свойство указывает, какой макрос запускается