Поделиться через


Класс не поддерживает объект Automation (ошибка 430)

Не все объекты предоставляют интерфейс автоматизации. Эта ошибка имеет следующие причину и решение:

  • Класс, указанный в функции GetObject или CreateObject, был найден, но не предоставил интерфейс программирования.

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

  • Тип проекта изменился с DLL на EXE или наоборот. Например, если при наличии скомпилированного и зарегистрированного сервера DLL изменить тип проекта на EXE и перекомпилировать его, тот факт, что DLL и EXE уже зарегистрированы в системе, будет препятствовать созданию обоих объектов. Чтобы устранить эту проблему, необходимо вручную отменить регистрацию старого проекта DLL или EXE. Эта проблема вызвана комбинацией совместимости проекта и изменения его типа с EXE на DLL. В целях совместимости с проектом сохраняется CLSID, но не IID. Поскольку CLSID сохраняется, класс регистрируется двумя серверами — внутрипроцессным и локальным. При создании экземпляра выбирается внутрипроцессный сервер. При запросе интерфейса DLL не поддерживает IID, так как он является новым.

Для получения дополнительной информации выберите необходимый элемент и нажмите клавишу F1 (для Windows) или HELP (для Macintosh).

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.