Макросы в Microsoft Excel — это мощный инструмент автоматизации, который экономит часы рутинной работы. Но что делать, если вы унаследовали файл с макросами от коллеги, забыли название нужного скрипта или просто не знаете, где их искать? Эта статья поможет разобраться, как найти макросы в Excel, даже если вы никогда раньше не работали с VBA (Visual Basic for Applications).
Многие пользователи ошибочно думают, что макросы хранятся"где-то внутри таблицы" как обычные данные. На самом деле они представляют собой программы, спрятанные в специальном редакторе. Мы рассмотрим все возможные способы их обнаружения — от стандартного диалогового окна до продвинутых методов для опытных пользователей. А если вы боитесь случайно запустить опасный код — в статье есть раздел о безопасности макросов.
Прежде чем приступить к поиску, убедитесь, что в вашей версии Excel включена вкладка"Разработчик". Без неё доступ к большинству инструментов работы с макросами будет закрыт. Если этой вкладки нет — не переживайте, мы покажем, как её активировать за 30 секунд.
1. Самый простой способ: окно"Макросы"
Начнём с самого очевидного метода, который работает во всех версиях Excel — от 2010 до 2023. Этот способ не требует знаний программирования и подходит даже для новичков.
Чтобы открыть список всех доступных макросов в текущей книге:
- Перейдите на вкладку
Видв верхнем меню - В группе
Макросынажмите кнопкуМакросы(или используйте горячие клавишиAlt + F8) - В открывшемся окне вы увидите полный список макросов с указанием их расположения
В этом окне отображаются:
- 📁 Имя макроса — как он называется в коде
- 🖥️ Книга — в какой именно файле Excel он хранится (важно, если у вас открыто несколько книг)
- 📝 Описание — краткое пояснение (если оно было добавлено разработчиком)
Если список пуст, это может означать:
- ❌ В книге действительно нет макросов
- 🔒 Макросы отключены в настройках безопасности
- 📂 Макросы хранятся в личном макросе (Personal.xlsb), который не загружен
2. Поиск через редактор VBA: для продвинутых пользователей
Если стандартного окна макросов недостаточно (например, вам нужно найти код по содержимому), придётся заглянуть в редактор VBA. Это"под капотом" Excel, где хранятся все программы.
Как открыть редактор:
- Нажмите комбинацию клавиш
Alt + F11 - Или перейдите на вкладку
Разработчик→Visual Basic
В редакторе VBA макросы могут находиться в разных местах:
| Расположение | Описание | Как выглядит в дереве проектов |
|---|---|---|
| Обычные модули | Самое распространённое место для хранения макросов | VBAProject → Модули → Module1 |
| Листы | Макросы, привязанные к конкретному листу | VBAProject → Листы → Лист1 (Sheet1) |
| Книга | Макросы, срабатывающие при открытии/закрытии файла | VBAProject → ЭтотКнига (ThisWorkbook) |
| Формы | Макросы, связанные с элементами пользовательского интерфейса | VBAProject → Формы → UserForm1 |
Чтобы быстро найти нужный макрос в редакторе:
- Нажмите
Ctrl + Fдля вызова поиска - Введите известное вам название или часть кода
- Убедитесь, что в настройках поиска выбрано
Текущий проект
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, но не отображаются в стандартном списке.
Как найти личную книгу макросов:
- Откройте редактор VBA (
Alt + F11) - В дереве проектов найдите
VBAProject (PERSONAL.XLSB) - Разверните её — здесь могут храниться модули со скрытыми макросами
Если личной книги нет, но вы хотите её создать:
- Запишите любой макрос (например, через
Разработчик → Запись макроса) - В окне сохранения выберите
Личная книга макросовв полеСохранить в - После записи файл 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. Поиск макросов по их действиям
Иногда проще найти макрос не по имени, а по тому, что он делает. Например, если вы знаете, что какой-то макрос форматирует ячейки зелёным цветом, можно поискать в коде упоминание этого цвета.
Как искать макросы по функционалу:
- Откройте редактор VBA (
Alt + F11) - Нажмите
Ctrl + Fдля поиска - Введите ключевые слова, связанные с действием макроса:
- 🔍 Для форматирования:
.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
Как использовать этот макрос:
- Откройте редактор VBA (
Alt + F11) - Вставьте этот код в новый модуль (
Insert → Module) - Запустите макрос
ListAllMacros(F5) - Результат появится на новом листе
Список макросов
Преимущества этого метода:
- 📊 Получаем structured список всех макросов с указанием их расположения
- 🔍 Можно искать по названию прямо в Excel (а не в редакторе VBA)
- 📌 Легко экспортировать список для документации
⚠️ Внимание: Этот макрос сам по себе безопасен, но для его работы необходимо включить доступ к объектной модели VBA в настройках безопасности (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройки макросов → Доверительный доступ к объектной модели проектов VBA).
Часто задаваемые вопросы
Можно ли найти макросы в Excel Online?
Нет, Excel Online (веб-версия) не поддерживает выполнение и просмотр макросов. Для работы с VBA вам понадобится настольная версия Excel (2010 или новее). Если файл с макросами открыть в Excel Online, все макросы будут недоступны, хотя сам файл откроется.
Обходной путь: скачайте файл на компьютер и откройте в настольной версии Excel.
Почему я не вижу вкладку"Разработчик" в Excel?
Вкладка Разработчик по умолчанию скрыта. Чтобы её включить:
- Перейдите в
Файл → Параметры → Настройка ленты - В правой колонке отметьте галочкой
Разработчик - Нажмите
OK
После этого вкладка появится в главном меню.
Как найти макрос, который выполняется при открытии файла?
Такие макросы хранятся в объекте ThisWorkbook и обычно называются:
Workbook_Open— выполняется при открытии файлаWorkbook_BeforeClose— выполняется перед закрытиемWorkbook_SheetActivate— при активации листа
Чтобы их найти:
- Откройте редактор VBA (
Alt + F11) - В дереве проектов найдите
VBAProject → ЭтотКнига (ThisWorkbook) - Проверьте код в этом разделе
Можно ли искать макросы по дате их создания или изменения?
Excel не хранит метки времени для отдельных макросов, но вы можете:
- Посмотреть дату изменения файла Excel (через свойства файла в проводнике)
- Использовать систему контроля версий (например, Git), если файл хранится в репозитории
- Добавить в начало каждого макроса комментарий с датой создания вручную:
' === Макрос: ИмяМакроса ===' Создан: 15.05.2023
' Автор: Иванов И.И.
' Описание: Форматирует отчёт по продажам
Как найти макросы, которые запускаются по нажатию кнопки?
Макросы, привязанные к элементам управления (кнопкам, выпадающим спискам), можно найти так:
- На листе Excel найдите элемент управления (кнопку, флажок и т.д.)
- Щёлкните по нему правой кнопкой мыши и выберите
Назначить макрос - В открывшемся окне вы увидите название привязанного макроса
Также можно:
- Посмотреть код элемента в редакторе VBA (в разделе
ФормыилиЛисты) - Искать в коде упоминания
.OnAction— это свойство указывает, какой макрос запускается