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

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

Многие пользователи даже не подозревают, что в их файлах могут быть спрятаны десятки макросов — от простых записанных действий до сложных VBA-процедур, запускающихся по таймеру или при открытии книги. В этой статье мы разберём 5 рабочих способов найти макросы в любой версии Excel (2010–2023), включая скрытые модули и личные книги макросов. Вы также узнаете, как безопасно просматривать код и избегать типичных ошибок.

Если вы никогда не работали с Visual Basic for Applications (VBA), не беспокойтесь: мы объясним всё простым языком, без технического жаргона. А для опытных пользователей приготовили расширенные методы, например, поиск макросов через Object Browser или анализ ThisWorkbook.

1. Включаем вкладку «Разработчик» — основа работы с макросами

Без вкладки Разработчик (Developer) вы не сможете даже увидеть список макросов, не говоря уже о их редактировании. По умолчанию она скрыта, но включить её можно за 30 секунд:

  • 📌 Excel 2010–2019: Файл → Параметры → Настройка ленты. В правой колонке поставьте галочку напротив Разработчик.
  • 📌 Excel 2021/365: Путь тот же, но интерфейс может слегка отличаться — ищите вкладку в разделе Основные вкладки.
  • 🔍 Если пункта нет: Возможно, у вас установлена Excel Starter или Excel Online — эти версии не поддерживают VBA.

После активации вкладки вы получите доступ к ключевым инструментам:

  • 🖱️ Макросы — просмотр и запуск существующих скриптов.
  • 📝 Visual Basic — редактор VBA для просмотра кода.
  • 🔄 Запись макроса — создание новых процедур.
⚠️ Внимание: В Excel для Mac путь к настройкам ленты другой: Excel → Параметры → Лента и панель инструментов. Также некоторые макросы, написанные под Windows, могут не работать на macOS из-за различий в объектах VBA.

2. Способ 1: Просмотр макросов через меню «Макросы»

Самый быстрый метод — использовать встроенное окно Макросы. Оно показывает все доступные процедуры в текущей книге и личной книге макросов (Personal.xlsb), если она подключена.

Как открыть:

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

В окне отобразятся:

  • 📌 Имя макроса — как он называется в коде.
  • 🖱️ Сочетание клавиш — если назначено (например, Ctrl+Shift+N).
  • 📁 Расположение — в каком модуле или листе хранится.
  • 🔍 Описание — если автор добавил комментарий.

Ограничение метода: здесь не отображаются макросы, привязанные к событиям (например, Worksheet_Change или Workbook_Open). Для их поиска нужен редактор VBA.

📊 Как часто вы используете макросы в Excel?
Ежедневно
Несколько раз в неделю
Рядом
Никогда

3. Способ 2: Поиск макросов в редакторе VBA

Редактор Visual Basic — это «под капотом» Excel, где хранится весь код. Здесь вы увидите все макросы без исключения, включая скрытые и системные. Чтобы открыть редактор:

  1. На вкладке Разработчик нажмите Visual Basic (или Alt + F11).
  2. В левой панели (Project Explorer) разверните дерево объектов:
VBAProject (Имя_вашей_книги.xlsm)

├── Microsoft Excel Objects

│ ├── ThisWorkbook

│ ├── Sheet1 (Лист1)

│ └── ...

├── Modules

│ ├── Module1

│ └── ...

└── Forms (если есть)

Где искать макросы:

  • 📄 Модули (Modules) — здесь хранятся большинства пользовательских макросов.
  • 📑 Объекты книги (ThisWorkbook) — макросы, срабатывающие при открытии/закрытии файла.
  • 📊 Листы (Sheet1, Sheet2) — макросы, привязанные к конкретным листам (например, при изменении ячейки).
⚠️ Внимание: Если в Project Explorer нет папки Modules, это не значит, что макросов нет! Они могут быть спрятаны в объектах листов или книги. Используйте поиск по коду (Ctrl+F) с запросом Sub или Function .

Проверьте папку Modules|Разверните ветку Microsoft Excel Objects|Ищите процедуры с префиксом Sub или Function|Просмотрите код в объекте ThisWorkbook-->

4. Способ 3: Поиск скрытых макросов и событий

Некоторые макросы не отображаются в окне Макросы (Alt+F8), потому что они привязаны к событиям. Например:

  • 🔄 Workbook_Open — выполняется при открытии файла.
  • 📝 Worksheet_Change — срабатывает при изменении ячейки.
  • ⏱️ Workbook_BeforeClose — запускается перед закрытием книги.

Как их найти:

  1. Откройте редактор VBA (Alt+F11).
  2. Дважды кликните на объект ThisWorkbook (в папке Microsoft Excel Objects).
  3. В верхней части окна кода выберите в выпадающем списке (General), затем Workbook — появится список всех событий книги.

Аналогично проверьте каждый лист:

  • Дважды кликните на Sheet1 (или другой лист).
  • В выпадающих списках выберите (General)Worksheet.
Тип события Пример макроса Когда срабатывает
Открытие книги Workbook_Open При открытии файла Excel
Изменение ячейки Worksheet_Change(ByVal Target As Range) При редактировании любой ячейки на листе
Активация листа Worksheet_Activate При переключении на лист
Закрытие книги Workbook_BeforeClose(Cancel As Boolean) Перед сохранением и закрытием файла
Как обнаружить макросы, запускающиеся по таймеру?

В VBA можно создавать макросы с задержкой выполнения через Application.OnTime. Чтобы их найти:

1. В редакторе VBA нажмите Ctrl+F.

2. Введите в поиск OnTime.

3. Проверьте все найденные процедуры — они могут запускать другие макросы через заданный интервал времени (например, каждые 5 минут).

5. Способ 4: Поиск макросов в личной книге макросов (Personal.xlsb)

Personal.xlsb — это скрытый файл, который загружается при каждом запуске Excel и хранит «глобальные» макросы, доступные во всех книгах. Многие пользователи забывают о его существовании, хотя там могут быть десятки процедур.

Как просмотреть макросы в Personal.xlsb:

  1. Откройте редактор VBA (Alt+F11).
  2. В Project Explorer найдите папку VBAProject (PERSONAL.XLSB).
  3. Разверните её и проверьте модули (Modules) и объекты (ThisWorkbook).

Если папки PERSONAL.XLSB нет, значит:

  • 🔴 Личная книга макросов не создана (вы никогда не сохраняли макросы с параметром Личная книга макросов).
  • 🟡 Файл повреждён или скрыт (попробуйте найти его вручную по пути %AppData%\Microsoft\Excel\XLSTART\).
⚠️ Внимание: Макросы из Personal.xlsb выполняются в контексте безопасности текущей книги. Если вы открываете файл с отключёнными макросами, глобальные процедуры тоже блокируются.

6. Способ 5: Используем Object Browser для продвинутого поиска

Инструмент Object Browser (F2 в редакторе VBA) позволяет искать макросы по их свойствам, методам и даже ключевым словам в коде. Это полезно, если вы ищете конкретную процедуру среди сотен строк.

Как пользоваться:

  1. Откройте редактор VBA и нажмите F2 (или View → Object Browser).
  2. В поле Search введите имя макроса или ключевое слово (например, Open или Save).
  3. В результатах ищите процедуры с иконкой 📝 (макросы) или 🔄 (функции).

Object Browser также показывает:

  • 🔹 Библиотеки объектов — например, Excel, VBA, Office.
  • 🔹 Классы и модули — где физически расположен макрос.
  • 🔹 Члены класса — свойства и методы, которые использует макрос.

Пример: если вы ищете макрос, который работает с диапазонами, введите в поиске Range. Object Browser покажет все процедуры, где используется этот объект.

7. Как экспортировать список всех макросов для анализа

Если вам нужно документировать макросы (например, для передачи коллеге или аудита), можно автоматически сгенерировать их список. Для этого:

  1. Откройте редактор VBA (Alt+F11).
  2. Нажмите Insert → Module и вставьте следующий код:
Sub ExportMacroList()

Dim vbComp As VBComponent

Dim vbProj As VBProject

Dim ws As Worksheet

Dim i As Long

Set ws = ThisWorkbook.Sheets.Add

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

ws.Cells(1, 1).Value = "Имя макроса"

ws.Cells(1, 2).Value = "Тип"

ws.Cells(1, 3).Value = "Модуль"

i = 2

Set vbProj = ThisWorkbook.VBProject

For Each vbComp In vbProj.VBComponents

If vbComp.Type = vbext_ct_StdModule Or _

vbComp.Type = vbext_ct_ClassModule Or _

vbComp.Type = vbext_ct_Document Then

Dim codeLine As Long

For codeLine = 1 To vbComp.CodeModule.CountOfLines

Dim lineText As String

lineText = vbComp.CodeModule.Lines(codeLine, 1)

If Left(Trim(lineText), 3) = "Sub" Or Left(Trim(lineText), 8) = "Function" Then

ws.Cells(i, 1).Value = Trim(Split(lineText, " ")(1))

ws.Cells(i, 2).Value = IIf(Left(lineText, 3) = "Sub", "Процедура", "Функция")

ws.Cells(i, 3).Value = vbComp.Name

i = i + 1

End If

Next codeLine

End If

Next vbComp

End Sub

Запустите макрос (F5), и в книге появится новый лист Список макросов со всеми процедурами, их типами и модулями, где они хранятся.

⚠️ Внимание: Этот код не найдёт макросы в Personal.xlsb! Чтобы экспортировать их, замените ThisWorkbook.VBProject на Application.VBE.VBProjects("PERSONAL.XLSB") (убедитесь, что файл существует).

FAQ: Частые вопросы о просмотре макросов в Excel

Можно ли увидеть макросы в файле Excel, если они отключены?

Нет. Если при открытии файла вы выбрали Отключить макросы, то просмотреть их код или список через Alt+F8 не получится. Сначала включите макросы (Файл → Сведения → Включить содержимое) и перезагрузите книгу.

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

Это макрос Workbook_Open, который хранится в объекте ThisWorkbook. Откройте редактор VBA (Alt+F11), дважды кликните на ThisWorkbook и ищите процедуру с именем Workbook_Open.

Почему в окне «Макросы» (Alt+F8) не отображаются некоторые процедуры?

Окно Макросы показывает только процедуры с модификатором Public. Если макрос объявлен как Private, он виден только в редакторе VBA. Также там не отображаются макросы, привязанные к событиям (например, Worksheet_Change).

Как узнать, есть ли в файле Excel макросы, не открывая его?

Проверьте расширение файла: если оно .xlsm (Macro-Enabled), то макросы есть. Файлы .xlsx не поддерживают VBA. Также можно открыть файл в Блокноте и поискать строку vbaProject — её наличие указывает на присутствие макросов.

Можно ли восстановить удалённый макрос?

Если вы не сохраняли книгу после удаления, закройте Excel без сохранения и откройте файл заново. Если сохранение было — попробуйте восстановить предыдущую версию через Файл → Сведения → Управление книгой → Восстановить (для OneDrive/SharePoint) или используйте резервные копии.