Исправление ошибки VBA «Class not registered» в Excel

Ошибка “Class not registered” в Microsoft Excel чаще всего появляется при попытке запустить макрос VBA. При возникновении этой проблемы макрос не выполняется, и требуемая автоматизация останавливается. Частые причины: отсутствующие или незарегистрированные DLL, повреждённая установка Office или повреждённые системные файлы Windows.
В этой статье подробно описаны проверенные методы устранения ошибки, включая пошаговые инструкции, альтернативы и диагностические рекомендации.
Быстрый план действий
- Попробуйте восстановление Microsoft Office (быстро и безопасно).
- Зарегистрируйте ключевую библиотеку fm20.dll вручную.
- Просканируйте систему инструментами DISM и SFC.
- Обновите Office до последней версии.
Если после всех шагов проблема остаётся — выполните раздел «Диагностика и чек‑лист» и используйте рекомендации по откату и альтернативам.
Подробные методы устранения
1. Восстановление Microsoft Office
Нажмите Windows + R, введите appwiz.cpl и нажмите Enter, чтобы открыть окно Программы и компоненты.

Найдите запись Microsoft Office, выберите её и нажмите Изменить.

Подтвердите запрос контроля учётных записей, нажав Да.

Выберите Онлайн‑восстановление и нажмите Восстановить, чтобы запустить процесс.

Примечание: Онлайн‑восстановление загружает файлы с серверов Microsoft и восстанавливает повреждённые компоненты. Это часто решает ошибки, связанные с COM‑объектами и библиотеками, используемыми VBA.
2. Регистрация критического DLL-файла (fm20.dll)
Нажмите Windows + S и введите Windows Terminal. Правой кнопкой мыши выберите Запуск от имени администратора.

Подтвердите UAC, нажав Да.

В меню терминала откройте Command Prompt (или нажмите Ctrl + Shift + 2).

Перейдите в системную папку 32/64‑битной версии Windows (пример для 64‑битной системы с 32‑битными Office компонентами):
cd C:\Windows\SysWOW64\
- Зарегистрируйте библиотеку fm20.dll:
Regsvr32 fm20.dll
Пояснение: fm20.dll — библиотека, связанная с элементами управления форм в Office. Если эта DLL не зарегистрирована или повреждена, макросы могут выдавать ошибку “Class not registered”.
Совет: если командная регистрация выдаёт ошибку “DLL не найдена”, проверьте наличие файла в каталоге Office (например, C:\Program Files\ or C:\Program Files (x86)\Microsoft Office…) и используйте подходящую папку (SysWOW64 для 32‑битных DLL на 64‑битной Windows).
Альтернатива: надёжные сторонние утилиты восстановления системных или библиотечных файлов могут автоматизировать поиск и регистрацию отсутствующих DLL, но используйте проверенный софт от известных вендоров.
3. Запустите сканы DISM и SFC
Нажмите Windows + R, введите wt и нажмите Ctrl + Shift + Enter, чтобы открыть Windows Terminal с правами администратора.

Подтвердите UAC нажатием Да.

В переключателе терминала откройте Command Prompt.

Выполните три команды DISM по очереди (копируйте и вставляйте, нажимая Enter после каждой):
DISM.exe /Online /Cleanup-image /Scanhealth
DISM.exe /Online /Cleanup-image /Restorehealth
DISM.exe /online /cleanup-image /startcomponentcleanup- Затем выполните проверку системных файлов:
sfc /scannow
Пояснение: DISM и SFC ищут и восстанавливают повреждённые файлы Windows и компоненты образа. Это полезно, если ошибка вызвана системной коррупцией, а не конкретно Office.
4. Обновление Microsoft Office
Откройте любое приложение Microsoft Office и создайте новый документ.
Нажмите Файл в левом верхнем углу.

Выберите Учетная запись в меню слева.

Под разделом Информация о продукте нажмите Параметры обновления.

Выберите Обновить сейчас и дождитесь завершения установки доступных обновлений.

Обновление Office часто включает исправления для COM‑библиотек и совместимости, которые устраняют подобные ошибки.
Когда эти методы не помогут
- Если макрос использует сторонние COM‑надстройки, неправильно зарегистрированные компоненты остаются проблемой — проверьте аддон.
- Если файл Excel повреждён (локальная книга с макросами), попробуйте экспортировать код VBA в новый файл и протестировать.
- Если организация использует централизованное управление (MSI/протоколы деплоймента), обратитесь к администратору для повторной установки пакета Office через корпоративный дистрибутив.
Альтернативные подходы и обходные пути
- Запустите макрос на другом компьютере с корректной установкой Office, чтобы проверить, проблема в файле или в окружении.
- Временный обход: переписать функциональность макроса на Power Query или Office Scripts (для облачных сценариев), если это приемлемо.
- Используйте виртуальную машину/контейнер с чистой установкой Office для выполнения критичных макросов.
Быстрая методология диагностики (4 шага)
- Изолируйте проблему: запускается ли макрос в Safe Mode Excel (Excel /safe)?
- Проверка окружения: разные пользовательские учётные записи, другой ПК.
- Восстановление/регистрация: Office Repair → Regsvr32 fm20.dll.
- Подтверждение: обновления Office и сканы DISM/SFC.
Decision flowchart (Mermaid)
flowchart TD
A[Начало: ошибка 'Class not registered'] --> B{Попробовать открыть в Safe Mode?}
B -- Да, открывается --> C[Проверьте надстройки и отключите их]
B -- Нет, не открывается --> D[Восстановление Office]
D --> E{Ошибка сохраняется?}
E -- Да --> F[Зарегистрировать fm20.dll]
E -- Нет --> G[Проверьте макрос]
F --> H[Запустить DISM/SFC]
H --> I{Результат}
I -- Исправлено --> J[Обновление Office и тест]
I -- Не исправлено --> K[Перенос макроса/обратиться к администратору]Роле‑ориентованный чек‑лист
Для конечного пользователя:
- Закройте Excel и перезапустите компьютер.
- Попробуйте открыть файл в безопасном режиме (Excel /safe).
- Убедитесь, что Office обновлён.
Для системного администратора:
- Выполните Online Repair для проблемной установки Office.
- Зарегистрируйте fm20.dll в нужной системной папке.
- Запустите DISM и SFC на хосте.
- Проверьте групповую политику/скрипты развёртывания, нет ли перезаписи библиотек.
Критерии приёмки
- Макросы запускаются без ошибки “Class not registered” в тестовой среде.
- Функциональность соответствует ожидаемому результату (см. список тестовых сценариев ниже).
- Изменения можно откатить, либо задокументированы действия по восстановлению.
Краткие тестовые сценарии:
- Запуск проблемного макроса в том же файле.
- Экспорт/импорт модулей VBA в новый файл и повторный запуск.
- Тест на другом устройстве с аналогичной версией Office.
Глоссарий (1‑строчные определения)
- VBA: Visual Basic for Applications — язык макросов в приложениях Microsoft Office.
- DLL: Dynamic Link Library — динамическая библиотека кода, используемая программами.
- DISM: инструмент обслуживания образа развертывания Windows.
- SFC: System File Checker — утилита проверки и восстановления системных файлов.
Примечания по безопасности и совместимости
- При регистрации DLL используйте только исходные файлы из доверенных источников и рабочие каталоги Windows/Office.
- Перед массовыми изменениями в корпоративной среде протестируйте процедуру на одном хосте.
Краткое резюме
Если вы столкнулись с ошибкой “Class not registered” при запуске VBA в Excel, начните с восстановления Office и регистрации fm20.dll. Затем просканируйте систему DISM и SFC и обновите Office. Если причина связана с надстройками или корпоративным развёртыванием, подключайте администратора и используйте представленные чек‑листы.
Важно: всегда делайте резервные копии файлов и документируйте выполненные действия для возможного отката.
Если у вас есть рабочий способ, который не описан здесь, или остались вопросы — оставьте комментарий ниже.
Похожие материалы
Как устроить идеальную вечеринку для просмотра ТВ
Как распаковать несколько RAR‑файлов сразу
Приватный просмотр в Linux: как и зачем
Windows 11 не видит iPod — способы исправить
PS5: как настроить игровые пресеты