Аннотация
При использовании в Microsoft Visual Basic оператора New или функции CreateObject для создания экземпляра приложения Microsoft Office может появиться приведенное ниже сообщение об ошибке.
Ошибка времени выполнения «429»: компоненту ActiveX не удается создать объект
Эта ошибка возникает, если com-модель компонента не может создать запрошенный объект службы автоматизации, и поэтому объект службы автоматизации недоступен для Visual Basic. Эта ошибка возникает не на всех компьютерах.
В этой статье описывается, как диагностировать и устранять распространенные проблемы, которые могут вызвать эту ошибку.
Дополнительная информация
В Visual Basic существует несколько причин ошибки 429. Ошибка возникает, если выполняется одно из следующих условий:
-
Наличие ошибки в приложении.
-
Наличие ошибки в конфигурации системы.
-
Отсутствие какого-либо компонента.
-
Наличие поврежденного компонента.
Чтобы найти причину возникновения ошибки, необходимо изолировать проблему. Если на клиентском компьютере появляется сообщение об ошибке «429», используйте следующие сведения, чтобы изолировать и устранить ошибку в приложениях Microsoft Office.
Примечание Некоторые из приведенных ниже сведений также могут применяться к COM-серверам, отличным от Office. Однако в данной статье предполагается, что ошибка связана с автоматизацией приложений Microsoft Office.
Проверка кода
Перед устранением ошибки попробуйте изолировать одну строку кода, которая может быть причиной проблемы.
Если вы обнаружите, что одна строка кода может вызвать проблему, выполните следующие процедуры:
-
Убедитесь, что код использует явное создание объекта.
Проблемы легче выявить, если они сужаются до одного действия. Например, найдите неявное создание объекта, которое используется в качестве одного из следующих вариантов.
Пример кода 1
Application.Documents.Add 'DON'T USE THIS!!
Пример кода 2
Dim oWordApp As New Word.Application 'DON'T USE THIS!! '... some other code oWordApp.Documents.Add
В обоих примерах используется неявное создание объекта. Microsoft Office Word 2003 не запускается до первого вызова переменной. Поскольку код вызова переменной может быть расположен в различных частях программы, локализация проблемы может оказаться непростой задачей. Может быть трудно убедиться, что проблема вызвана при создании объекта Application или при создании объекта Document .
Вместо этого можно выполнять явные вызовы для создания каждого объекта отдельно, как показано ниже.
Dim oWordApp As Word.Application Dim oDoc As Word.Document Set oWordApp = CreateObject("Word.Application") '... some other code Set oDoc = oWordApp.Documents.Add
При использовании явных вызовов для создания каждого объекта по отдельности изолировать проблему легче. Это также может сделать код более удобным для чтения.
-
При создании экземпляра приложения Office используйте функцию CreateObject вместо оператора New.
Функция CreateObject тесно сопоставляет процесс создания, используемый большинством клиентов Microsoft Visual C++. Функция CreateObject также позволяет изменять идентификатор CLSID сервера между версиями. Функцию CreateObject можно использовать с объектами с ранней привязкой и с объектами с поздним связыванием.
-
Убедитесь, что строка ProgID, передаваемая
в CreateObject, правильна, а затем убедитесь, что строка ProgID не зависит от версии. Например, используйте строку «Excel.Application» вместо строки «Excel.Application.8». В системе, где возникает проблема, может быть установлена более старая или более новая версия Microsoft Office, отличная от версии, указанной в строке «ProgID». -
Используйте команду Erl , чтобы сообщить номер строки кода, которая не завершается успешно. Это может облегчить отладку приложений, которые не запускаются в интегрированной среде разработки. Следующий код указывает, какой объект службы автоматизации нельзя создать (Microsoft Word или Microsoft Office Excel 2003):
Dim oWord As Word.Application Dim oExcel As Excel.Application On Error Goto err_handler 1: Set oWord = CreateObject("Word.Application") 2: Set oExcel = CreateObject("Excel.Application") ' ... some other code err_handler: MsgBox "The code failed at line " & Erl, vbCritical
Для отслеживания ошибки используйте функцию MsgBox и номер строки.
-
Используйте позднюю привязку следующим образом:
Dim oWordApp As Object
Для объектов с ранней привязкой необходимо, чтобы их настраиваемые интерфейсы были маршалированы через границы процессов. Если пользовательский интерфейс не может быть маршалирован во время CreateObject или Во время создания, вы получите сообщение об ошибке «429». Объект с поздней привязкой использует определенный системой интерфейс IDispatch, который не требует маршалирования настраиваемого прокси. Используйте объект с поздним связыванием, чтобы убедиться, что эта процедура работает правильно.
Если проблема возникает только при ранней привязке объекта, проблема возникает в серверном приложении. Как правило, чтобы устранить проблему, достаточно переустановить приложение, как описано в разделе «Проверка сервера автоматизации» данной статьи.
Проверка сервера автоматизации
Наиболее распространенной причиной возникновения ошибки при использовании CreateObject или New является проблема, которая влияет на серверное приложение. Обычно причиной возникновения проблемы является установка или конфигурация приложения. Для устранения неполадок используйте следующие методы:
-
Убедитесь в том, что приложение Microsoft Office, которое необходимо автоматизировать, установлено на локальном компьютере. Убедитесь в возможности запуска приложения. Для этого нажмите кнопку Пуск, нажмите кнопку
Выполнить, а затем попробуйте запустить приложение. Если приложение не запускается вручную, автоматизировать его нельзя. -
Перерегистрируйте приложение описанным ниже образом.
-
Нажмите кнопку Пуск, а затем — Выполнить.
-
В диалоговом окне Выполнить введите путь к серверу и в конце строки добавьте параметр /RegServer.
-
Нажмите кнопку ОК.
Приложение выполняется автоматически. Приложение будет перерегистрировано как COM-сервер.
Если причиной возникновения проблемы является отсутствие раздела реестра, в большинстве случаев выполнение перечисленных ниже действий приводит к устранению проблемы.
-
-
Проверьте раздел LocalServer32 в разделе CLSID приложения, которое необходимо автоматизировать. Убедитесь в том, что раздел LocalServer32 указывает на правильное местоположение приложения. Проверьте, чтобы путь был указан в кратком формате (DOS 8.3). Сервер не обязательно регистрировать с использованием краткого пути. Однако длинные пути, включающие пробелы, в некоторых системах могут являться причиной возникновения проблем.
Чтобы изучить ключ пути, хранящийся для сервера, запустите редактор реестра Windows следующим образом:
-
Нажмите кнопку Пуск, а затем — Выполнить.
-
Введите regedit и нажмите кнопку ОК.
-
Перейдите в раздел HKEY_CLASSES_ROOTCLSID.
Идентификаторы CLSID для зарегистрированных серверов автоматизации в системе находятся под этим ключом.
-
Чтобы найти раздел, представляющий приложение Microsoft Office, которое необходимо автоматизировать, используйте приведенные ниже значения раздела CLSID. Поверьте в разделе CLSID путь, указанный в разделе LocalServer32.
Сервер Office
Раздел CLSID
Access.Application
{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
Excel.Application
{00024500-0000-0000-C000-000000000046}
Outlook.Application
{0006F03A-0000-0000-C000-000000000046}
PowerPoint.Application
{91493441-5A91-11CF-8700-00AA0060263B}
Word.Application
{000209FF-0000-0000-C000-000000000046}
-
Проверьте путь, чтобы убедиться, что он соответствует фактическому расположению файла.
Примечание. Краткие пути могут иногда казаться правильными ошибочно. Например, Office и Microsoft Internet Explorer (если они установлены в расположениях по умолчанию) имеют короткий путь, аналогичный C:PROGRA~1MICROS~X (где
X — это число). Этот путь может сначала не показаться кратким путем.Чтобы определить, правильный ли путь, выполните следующие действия.
-
Нажмите кнопку Пуск, а затем — Выполнить.
-
Скопируйте значение из реестра и вставьте его в поле диалогового окна Выполнить.
Примечание Перед запуском приложения удалите параметр /automation .
-
Нажмите кнопку ОК.
-
Проверьте правильность запуска приложения.
Если приложение запускается после нажатия кнопки ОК, сервер зарегистрирован правильно. Если приложение не запускается после нажатия кнопки ОК, замените значение ключа LocalServer32 правильным путем. По возможности используйте краткий путь.
-
-
Проверьте шаблон Normal.dot или файл ресурсов Excel.xlb на предмет возможного повреждения. Проблемы при автоматизации Microsoft Word или Microsoft Excel могут возникать вследствие повреждения шаблона Normal.dot в Microsoft Word или файла ресурсов Excel.xlb в Microsoft Excel. Чтобы протестировать эти файлы, найдите на локальных жестких дисках все экземпляры Normal.dot или Excel.xlb.
Примечание Вы можете найти несколько копий этих файлов. Для каждого профиля пользователя, установленного в системе, имеется одна копия каждого из этих файлов.
Временно переименуйте файлы Normal.dot или Excel.xlb, а затем повторно запустите тест автоматизации. Если Microsoft Word и Microsoft Excel не находят эти файлы, они создают их снова. Убедитесь, что код работает. Если при создании нового файла Normal.dot код работает, удалите переименованные файлы. Эти файлы повреждены. Если код не работает, необходимо вернуть эти файлы в исходные имена файлов, чтобы сохранить все пользовательские параметры, сохраненные в этих файлах.
-
Запустите приложение под учетной записью администратора. Серверам Office требуется доступ на чтение и запись к реестру и диску. Серверы Office могут загружаться неправильно, если текущие параметры безопасности запрещают доступ на чтение и запись.
Проверка системы
Конфигурация системы также может вызвать проблемы при создании внепроцессных COM-серверов. Для устранения неполадок используйте следующие методы в системе, в которой произошла ошибка:
-
Определите, возникает ли проблема с каким-либо сервером вне процесса. Если у вас есть приложение, использующее определенный COM-сервер (например, Word), протестируйте другой внепроцессный сервер, чтобы убедиться, что проблема не возникает на самом уровне COM. Если вы не можете создать внепроцессный COM-сервер на компьютере, переустановите системные файлы OLE, как описано в разделе «Переустановка Microsoft Office» этой статьи, или переустановите операционную систему, чтобы устранить проблему.
-
Проверьте номера версий системных файлов OLE, которые управляют автоматизацией. Эти файлы обычно устанавливаются в наборе. Номера сборки этих файлов должны совпадать. Неправильно настроенная программа установки может по ошибке установить файлы отдельно. В этом случае файлы не будут сочетаться. Чтобы избежать проблем с автоматизацией, проверьте файлы, чтобы убедиться, что сборки файлов совпадают.
Файлы автоматизации находятся в каталоге WindowsSystem32. Проверьте перечисленные ниже файлы.
Имя файла
Версия
Дата изменения
Asycfilt.dll
10.0.16299.15
29 сентября 2017 г.
Ole32.dll
10.0.16299.371
29 марта 2018 г.
Oleaut32.dll
10.0.16299.431
3 мая 2018 г.
Olepro32.dll
10.0.16299.15
29 сентября 2017 г.
Stdole2.tlb
3.0.5014
29 сентября 2017 г.
Чтобы изучить версию файла, щелкните файл правой кнопкой мыши в проводнике и выберите пункт Свойства. Обратите внимание на последние четыре цифры версии файла (номер сборки) и дату последнего изменения файла. Убедитесь в том, что эти значения одинаковы для всех файлов автоматизации.
Примечание Следующие файлы предназначены для Windows 10 версии 1709 сборки 16299.431. Эти числа и даты являются только примерами. Реальные значения могут быть иными.
-
Используйте служебную программу конфигурации системы (Msconfig.exe) для проверки служб и запуска системы на наличие сторонних приложений, которые могут ограничить выполнение кода в приложении
OfficeПримечание. Отключите антивирусную программу только временно в тестовой системе, которая не подключена к сети.
Кроме того, выполните следующие действия в Outlook, чтобы отключить сторонние надстройки:
Если этот метод устраняет проблему, обратитесь к стороннему поставщику антивирусной программы для получения дополнительных сведений об обновлении антивирусной программы.
-
В меню Файл выберите пункт Параметры, а затем — Надстройки.
-
Щелкните Управление надстройками COM и нажмите кнопку Перейти.
Примечание Откроется диалоговое окно надстройки COM.
-
Снимите флажок для любой сторонней надстройки и нажмите кнопку ОК.
-
Перезапустите Outlook.
-
Переустановка Microsoft Office
Если ни одна из предыдущих процедур не устраняет проблему, удалите и переустановите Office.
Дополнительные сведения см. в следующей статье Office:
Скачивание и установка или повторная установка Office 365 или Office 2016 на ПК или Mac
Ссылки
Дополнительные сведения об автоматизации Office и примерах кода см. на следующем веб-сайте Майкрософт:
Начало работы с разработкой Office
Обзор
При использовании оператора New или функции CreateObject в Microsoft Visual Basic для создания экземпляра приложения Microsoft Office, может появиться следующее сообщение об ошибке:
Ошибка выполнения ‘429’: компоненту ActiveX не удается создать объект
Эта ошибка возникает, когда запрошенный объект автоматизации не может быть создан с помощью COM и, следовательно, является недоступным для Visual Basic. Сообщение об ошибке обычно отображается на определенных компьютерах, но не другие.
Эта статья содержит советы по устранению неполадок для диагностики и устранения неполадок, вызывающих возникновение этой ошибки.
Дополнительные сведения
В отличие от некоторых ошибок в Visual Basic нет не одной из причин об ошибке 429. Проблема возникает из-за ошибки в конфигурации системы или приложения или компонента отсутствует или поврежден. Поиск точная причина заключается в возможности устранения. При возникновении этой ошибки на клиентском компьютере, существует ряд вещей, которые необходимо проверить для выявления и устранения ошибки.
Позже, элементы предоставляют некоторые практические советы по устранению данной ошибки при работе с приложениями Office. Часть этой информации также относится к серверам Microsoft Office COM также, но в данной статье предполагается, что вы пытаетесь автоматизации Microsoft Office.
Проверка кода
Первое место, чтобы начать поиск проблемы — в коде. До устранения ошибки, необходимо знать, где произошла ошибка. Попробуйте сузить до одной строки кода.
Найдя код, который не удается, попробуйте сделать следующее:
-
Убедитесь, что в коде используется явное создание объекта. Любые проблемы проще найти и определить, если проблема сведена до отдельного действия. Например не выполните следующее:
Application.Documents.Add 'DON'T USE THIS!!
или:
Dim oWordApp As New Word.Application 'DON'T USE THIS!!
'... some other code
oWordApp.Documents.AddОба эти метода используется неявное создание объекта. Microsoft Word не начинается, пока переменная называется по крайней мере один раз. Поскольку переменная может вызываться в разных частях программы, это может сделать проблему трудно локализовать. Кроме того неясно, связана ли проблема с созданием объекта приложения или объекта документа.
Вместо этого указать явные вызовы для создания каждого объекта в отдельности:
Dim oWordApp As Word.Application
Dim oDoc As Word.Document
Set oWordApp = CreateObject("Word.Application")
'... some other code
Set oDoc = oWordApp.Documents.AddЭто упрощает выявление проблемы и делает код более удобным для чтения.
-
При создании экземпляра приложения Microsoft Office, используйте вместо New CreateObject . CreateObject более точно соответствует процесс создания, используемый большинство клиентов Visual C++ и позволяет возможные изменения CLSID сервера между версиями. Функция CreateObject можно использовать с объектами с ранним связыванием и поздним связыванием.
-
Проверьте правильность строки ProgID, передаваемые CreateObject , а также является независимость от версии (то есть использовать «Excel.Application» вместо «Excel.Application.8»). Возможно, что система, которую дает сбой имеет более старой или новой версии Microsoft Office до версии, указанной в идентификатор ProgID.
-
Для упрощения отладки приложений, которые не запускаются в Интегрированной среде разработки, команда Erl сообщить номер строки, который не проходит. Например следующий код сообщит, какой объект автоматизации невозможно (Word или Excel):
Dim oWord As Word.Application
Dim oExcel As Excel.ApplicationOn Error Goto err_handler
1: Set oWord = CreateObject("Word.Application")
2: Set oExcel = CreateObject("Excel.Application")' ... some other code
err_handler:
MsgBox "The code failed at line " & Erl, vbCriticalИспользуйте сочетание окон сообщений и номеров строк для отслеживания ошибки.
-
Попробуйте использовать позднее связывание (то есть Dim oWordApp как объект). Объекты с ранней привязкой требуют их настраиваемые интерфейсы были переданы через границы процессов. Если маршалинг пользовательского интерфейса во время CreateObject или Создатьпроблемы, вы получите сообщение об ошибке 429. Позднее присоединенного объекта использует определенный системой интерфейс (IDispatch), не требуется настраиваемый прокси для маршалинга. Попробуйте использовать позднее присоединенного объекта для просмотра, если это делает разницу.
Если проблема возникает только в том случае, когда объект является раннее связывание, проблема связана с серверного приложения и обычно можно исправить путем переустановки приложения (см. ниже).
-
При автоматизации из ASP или компонента MTS используйте CreateObject вместо Server.CreateObject(). Используя Server.CreateObject будет создан экземпляр приложения Office с использованием идентификатора пакета MTS, который приводит к проблемам с Microsoft Office.
Проверка сервера автоматизации
Самые распространенные причины возникновения ошибки CreateObject или New , проблем с самим приложением сервера. Как правило эти проблемы являются конфигурации или установки приложения. Ниже приведены некоторые элементы для проверки.
-
Проверьте Microsoft Office, приложение, которое требуется автоматизация установлена на локальном компьютере и убедитесь в том, что можно запустить приложение с самого начала и запустить диалоговое окно. Если программа не может быть запущена вручную, он не будет работать через автоматизацию.
-
Перерегистрируйте приложение, введя путь к серверу в начале и затем запустить диалоговое окно и затем добавить к концу строки/regserver . Нажмите кнопку ОК. Это без вмешательства пользователя необходимо запустить приложение и повторно зарегистрировать его как COM-сервер. Если неполадка связана с раздел реестра отсутствует, это обычно будет исправить.
-
Проверьте LocalServer32 в разделе CLSID для приложения, которое требуется автоматизация. Убедитесь, что он указывает на правильное расположение приложения и убедитесь, что указан путь в формате короткого пути (DOS 8.3). Хотя он не является обязательным требованием, на сервере будет зарегистрирован с помощью краткого пути, длинные имена путей, включающие пробелы известны возникновение проблем в некоторых системах (см. ниже).
Чтобы проверить раздел пути, хранящиеся на сервере, запустите редактор реестра Windows, введя команду regedit в начале, а затем запустите диалоговое окно. Перейдите к разделу HKEY_CLASSES_ROOTClsid. В этом разделе вы найдете CLSID для зарегистрированных серверов автоматизации в системе. Позже с помощью значений, найти ключ, представляющий приложение Office требуется Автоматизация и проверьте его раздел LocalServer32 пути.
+========================+=========================================+
| Office Server | CLSID Key |
+========================+=========================================+
| Access.Application | {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9} |
+————————+——————————————+
| Excel.Application | {00024500-0000-0000-C000-000000000046} |
+————————+——————————————+
| FrontPage.Application | {04DF1015-7007-11D1-83BC-006097ABE675} |
+————————+——————————————+
| Outlook.Application | {0006F03A-0000-0000-C000-000000000046} |
+————————+——————————————+
| PowerPoint.Application | {91493441-5A91-11CF-8700-00AA0060263B} |
+————————+——————————————+
| Word.Application | {000209FF-0000-0000-C000-000000000046} |
+————————+——————————————+
Соответствует ли путь фактическое расположение файла? Имейте в виду, что в короткое имя создать впечатление, что путь указан правильно, когда он не может быть. Например Microsoft Office и Microsoft Internet Explorer (если он установлен в расположениях по умолчанию) будет иметь короткий путь «C:PROGRA~1MICROS~X» где X — некоторое число. Это не очевидно, что вы находитесь на короткое имя.Можно проверить правильность пути действительно скопировать значение из реестра и вставки в начало, а затем диалоговое окно Запуск (удалить переключатель/Automation до запуска приложения). Запускается ли приложение при нажатии кнопки ОК? Если Да, сервер зарегистрирован правильно. Если нет, следует заменить значение раздела LocalServer32 на правильный путь (используйте краткий путь, если это возможно).
-
Известны проблемы возникает при автоматизации Word или Excel, если шаблон Normal.dot (Word) или файл ресурсов Excel.xlb (Excel), был поврежден. Чтобы проверить, если произошло повреждение, поиск локальных жестких дисков для поиска всех экземпляров Normal.dot или *.xlb. (Обратите внимание, что при запуске Windows 2000, Windows NT или Windows 95 или Windows 98 с включенными профилями, может оказаться несколько копий этих файлов для каждого профиля пользователя в системе.) Временно переименуйте файлы Normal.dot или файлы *.xlb и повторно запустите проверку автоматизации (Word и Excel создаст эти файлы, если они не может их найти). Код теперь работать? Если Да, выберите файлы, которые вы переименовали следует удалить, так как они повреждены. Если это не так, переименуйте их обратно в их исходные имена, будут потеряны все пользовательские параметры, сохраненные в этих файлах.
-
При работе в Windows NT, Windows 2000, Windows XP или Windows Server 2003 система, запустите приложения под учетной записью администратора. Серверов Office требуется доступ на чтение и запись в реестре и на диске и могут не загружаться должным образом, если ваши текущие параметры безопасности запрещают эту привилегию.
Проверка системы
Конфигурация системы также может вызвать проблемы с созданием out-of-process COM-серверов. Ниже приведены несколько советов по проверке систем место возникновения ошибки.
-
Проблема происходит с любым сервером out-of-process? Если у вас есть приложение, которое использует только определенный COM-сервер (например, Word), вы захотите проверить на другой сервер out-of-process, чтобы убедиться, что проблема не связана с COM сам слой. Если нет out-of-process COM-сервера могут быть созданы в этой системе, переустановке системы OLE файлов (см. ниже), или для устранения этой проблемы потребуется переустановка операционной системы.
-
Проверьте номера версий системных файлов OLE, которые управляют автоматизацией. Эти файлы обычно устанавливаются как набор и должно соответствовать номера построений. Неправильно настроенная программа установки может ошибочно установить файлы по отдельности, к ним становятся несоответствие. Чтобы избежать проблем при автоматизации, следует проверять файлы, убедитесь, что файлы совпадают построений.
Файлы автоматизации можно найти в каталоге WindowsSystem или WinntSystem32. Ниже приведен список файлов для проверки:
+—————+————-+—————-+
| File Name | Version | Date Modified |
+—————+————-+—————-+
| Asycfilt.dll | 2.40.4275 | March 08, 1999 |
| Oleaut32.dll | 2.40.4275 | March 08, 1999 |
| Olepro32.dll | 5.0.4275 | March 08, 1999 |
| Stdole2.tlb | 2.40.4275 | March 08, 1999 |
+—————+————-+—————-+
Проверьте версию файла, щелкните правой кнопкой мыши файл в обозревателе и при выборе свойства из всплывающего меню. Наиболее важные значения, последние четыре цифры в версии файла (номер сборки) и дату последнего изменения. Необходимо убедиться, что эти значения одинаковы для всех файлов автоматизации.Обратите внимание, что номера версии и даты, приведенном выше, например исключительно в целях. Значения могут отличаться. Важно, что эти значения соответствуют друг другу, а не в этой таблице.
Если файлы не соответствуют номера сборок или даты изменений, вы можете загрузить самораспаковывающийся программа обновит файлы автоматизации. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
290887 VBRun60sp6.exe устанавливает файлы времени выполнения Visual Basic 6.0 SP6
-
Windows NT 4.0 имеет известные проблемы с запуском серверы автоматизации, которые находятся в папке, которая содержит пробелы в имени и напоминает другую папку, совпадают с первыми 8 символами. Например сервер, живущих в C:Program FilesSomeFolder может не запуститься во время вызова к CreateObject, если система называется C:Program StuffSomeFolder другую папку. Дополнительные сведения см в следующей статье базы знаний:Дополнительные сведения об этой проблеме и действия, чтобы избежать этого, щелкните следующий номер статьи базы знаний Майкрософт:
Ошибка 185126 : COM и OLE-сервер не запускается в Windows NT 4.0
Переустановка Microsoft Office.
Если ни один из предыдущих шагов позволяет устранить проблему, рассмотрите возможность удаления и переустановки Microsoft Office. Корпорация Майкрософт рекомендует сначала удалить существующую версию, а затем переустановите с исходных установочных дисков.
Полный список удаляемых элементов можно найти в следующих статьях базы знаний:
219423 OFF2000: как полностью удалить Microsoft Office 2000
158658 OFF97: как полностью удалить Microsoft Office 97
Ссылки
Дополнительные сведения об устранении неполадок при сообщении об ошибке ‘429’ щелкните следующий номер статьи базы знаний Майкрософт:
240377 HOWTO: Убедитесь в правильности установки Jet 3.5 (часть I)
Последние сведения и примеры кода по автоматизации Microsoft Office можно найти на сайте поддержки Microsoft Online по:
http://support.microsoft.com/ofd
- Remove From My Forums
-
Question
-
A DLL required by the object can’t be used, either because it can’t be found, or it was found but was corrupted.
Make sure all associated DLLs are available. For example, the Data Access Object (DAO) requires supporting DLLs that vary among platforms. You may have to rerun the setup program for such an object if that is what is causing this error.I am using Windows 10 and Office 2016 Excel visual basic.
How can I make sure all the associated DLLs are available?
How do I rerun the setup program for this object?
I am wishing to run this code:-
I am running windows 10 on notebook 64bit and subscribe to office 2016
Microsoft Excel 16
I get a ‘Run time error 429’
— ActiveX component can’t create object
when I run this code in Excel VBA.
Set objIE = New InternetExplorer
It should open a new instance of Internet Explorer, but the program halts with this error 429. But it appears the whole code doesn’t like the «obj» reference.
Thanks you in anticipation if anyone can help me.
Answers
-
-
Proposed as answer by
Sunday, June 26, 2016 2:58 PM
-
Marked as answer by
David_JunFeng
Monday, June 27, 2016 9:44 AM
-
Proposed as answer by
-
It should be InternetExplorer.Application instead of just InternetExplorer
Really? It get a compile error if I do so:
But when I set a reference to
Microsoft Internet Controls
{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B} 1.1
C:WindowsSysWOW64ieframe.dllthen this code works for me:
Option Explicit Sub Test() Dim objIE As InternetExplorer Set objIE = New InternetExplorer objIE.Visible = True End Sub
IMHO this issue is not related to the code but to windows, resp. the internet explorer itself.
So I suggest the OP should repair the internet explorer:
https://support.microsoft.com/en-us/kb/318378Andreas.
-
Edited by
Andreas Killer
Sunday, June 19, 2016 10:45 AM -
Proposed as answer by
David_JunFeng
Sunday, June 26, 2016 2:58 PM -
Marked as answer by
David_JunFeng
Monday, June 27, 2016 9:44 AM
-
Edited by
-
This code does what you want:
Option Explicit
Sub Test()
Dim ObjIE As ObjectSet ObjIE = CreateObject(«InternetExplorer.Application»)
‘…. (your code) ….
End Sub
Best regards, George
-
Proposed as answer by
David_JunFeng
Sunday, June 26, 2016 2:58 PM -
Marked as answer by
David_JunFeng
Monday, June 27, 2016 9:44 AM
-
Proposed as answer by
Run-time error 429 is a Visual Basic error often seen when creating instances in MS Office or other programs that depends or use Visual Basic. This error occurs when the Component Object Model (COM) cannot create the requested Automationobject, and the Automation object is, therefore, unavailable to Visual Basic. This error does not occur on all computers.
Many Windows users have reported experiencing over the years and over the many different iterations of the Windows Operating System that have been developed and distributed. In the majority of reported cases, Run-time error 429 rears its ugly head while the affected user is using a specific application on their Windows computer, and the error results in the affected application crashing and closing down abruptly.
Some users have also reported receiving this error when they try and run applications/add-ons designed on VB such as those provided by bloomberg and bintex.
Run-time error 429 has been the cause of worry across the many different versions of Windows that have existed, including Windows 10 – the latest and greatest in a long line of Windows Operating Systems. The most common victims of Run-time error 429 include Microsoft Office applications (Excel, Word, Outlook and the like), and Visual Basic sequence scripts.
The entirety of the error message that users affected by this problem see reads:
“Run-time error ‘429’: ActiveX component can’t create the object“
That being the case, this error is sometimes also referred to as ActiveX Error 429. The message accompanied by this error doesn’t really do much in the way of explaining its cause to the affected user, but it has been discovered that Run-time error 429 is almost always triggered when the affected application tries to access a file that does not exist, has been corrupted or simply hasn’t been registered on Windows for some reason. The file the application tries to access is integral to its functionality, so not being able to access it results in the application crashing and spitting out Run-time error 429.
Fixing Run-time error ‘429’: ActiveX component can’t create the object
Thankfully, though, there is a lot anyone affected by Run-time error 429 can do in order to try and get rid of the error and resolve the problem. The following are some of the absolute most effective solutions that you can use to push back when faced with Run-time error 429:
Solution 1: Perform an SFC scan
One of the leading culprits behind Run-time error 429 are system files applications need in order to function properly but which have somehow been corrupted. This is where an SFC scan comes in. The System File Checker utility is a built-in Windows tool designed specifically for the purpose of analyzing a Windows computer for corrupt or otherwise damaged system files, locating any that exist and then either repairing them or replacing them with cached, undamaged copies. If you are trying to get rid of Run-time error 429, running an SFC scan is definitely a first step in the right direction. If you are not familiar with the process of running an SFC scan on a Windows computer, simply follow this guide.
Solution 2: Re-register the affected application
If you are only running into Run-time error 429 while using a specific application on your computer, it is quite likely that you have fallen prey to the problem simply because the application in question has not been correctly configured on your computer and, therefore, is causing issues. This can quickly be remedied by simply re-registering the affected application with the onboard automation server the Windows Operating System has, after which any and all issues should be resolved on their own. To re-register the affected application on your computer, you need to:
- Make sure that you are logged into an Administrator account on your Windows computer. You are going to need administrative privileges to re-register an application on your computer.
- Determine the complete file path for the executable application file (.EXE file) belonging to the application affected by this problem. To do so, simply navigate to the directory on your computer the affected application was installed to, click on the address bar in the Windows Explorer window, copy over everything it contains to some place you can easily retrieve it from when you need it, and add the name of the file and its extension to the end of the file path. For example, if the application in question is Microsoft Word, the full file path will look something like:
C:Program Files (x86)Microsoft OfficeOffice12WINWORD.EXE - Press the Windows Logo key + R to open a Run dialog.
- Type in or copy over the full file path for the executable application file belonging to the application affected by Run-time error 429, followed by /regserver. The final command should look something like:
C:Program Files (x86)Microsoft OfficeOffice12WINWORD.EXE /regserver - Press Enter.
- Wait for the application in question to be successfully re-registered.
Once the application has been re-registered, be sure to launch and use it and check to see if Run-time error 429 still persists.
Solution 3: Re-register the file specified by the error message
In some cases, the error message affected users see with Run-time error 429 specifies a particular .OCX or .DLL file that the affected application could not access. If the error message does specify a file in your case, the specified file is simply not correctly registered in your computer’s registry. Re-registering the specified file might just be all you need to do in order to get rid of Run-time error 429. To re-register a file with your computer’s registry, you need to:
- Close any and all open applications.
- Make sure that you have the full name of the file specified by the error message noted down someplace safe.
- If you’re using Windows 8 or 10, simply right-click on the Start Menu button to open the WinX Menu and click on Command Prompt (Admin) to launch an elevated Command Prompt that has administrative privileges. If you’re using an older version of Windows, however, you are going to have to open the Start Menu, search for “cmd“, right-click on the search result titled cmd and click on Run as administrator to achieve the same result.
- Type regsvr32 filename.ocx or regsvr32 filename.dll into the elevated Command Prompt, replacing filename with the actual name of the file specified by the error message. For example, if the error message specified vbalexpbar4.ocx as the file that could not be accessed, what you type into the elevated Command Prompt will look something like:
regsvr32 vbalexpbar4.ocx - Press Enter.
Wait for the specified file to be successfully re-registered with your computer’s registry, and then check to see if you have managed to successfully get rid of Run-time error 429.
Solution 4: Reinstall Microsoft Windows Script (For Windows XP and Windows Server 2003 users only)
The purpose of Microsoft Windows Script on Windows XP and Windows Server 2003 is to allow multiple scripting languages to work simultaneously in perfect harmony, but a failed, incomplete or corrupted installation of the utility can result in a variety of different issues, Run-time error 429 being one of them. If you are experiencing Run-time error 429 on Windows XP or Windows Server 2003, there is a good chance that simply reinstalling Microsoft Windows Script will fix the problem for you. If you would like to reinstall Microsoft Windows Script on your computer, simply:
- Click here if you are using Windows XP or here if you are using Windows Server 2003.
- Click on Download.
- Wait for the installer for Microsoft Windows Script to be downloaded.
- Once the installer has been downloaded, navigate to the directory it was downloaded to and run it.
- Follow the onscreen instructions and go through the installer all the way through to the end to successfully and correctly install Microsoft Windows Script on your computer.
Once you have a correct installation of Microsoft Windows Script on your computer, check to see if Run-time error 429 still persists.
Kevin Arrows
Kevin is a dynamic and self-motivated information technology professional, with a Thorough knowledge of all facets pertaining to network infrastructure design, implementation and administration. Superior record of delivering simultaneous large-scale mission critical projects on time and under budget.
ALFA Пользователь Сообщений: 243 |
Всем привет! |
Юрий М Модератор Сообщений: 60390 Контакты см. в профиле |
#2 30.09.2014 14:02:30
И где этот файл? |
||
Jack Пользователь Сообщений: 352 |
сохранить файл в формате .xlsx |
ALFA Пользователь Сообщений: 243 |
Вот если запускать файл уже при открытом приложении Excel, возникает сбой. |
Hugo Пользователь Сообщений: 23137 |
Чтоб всё проверить — нужен 2.htm |
ALFA Пользователь Сообщений: 243 |
вот он Прикрепленные файлы
|
Jack Пользователь Сообщений: 352 |
#7 30.09.2014 18:49:45 а если поменять в коде ЭтаКнига
на
именно на эту строчку иногда ругается |
||||
ALFA Пользователь Сообщений: 243 |
1/0 это модальное/не модальное, какое отношение имеет к делу? |
Jack Пользователь Сообщений: 352 |
у вас указан параметр showmodal = true. |
Юрий М Модератор Сообщений: 60390 Контакты см. в профиле |
Вам предлагают вариант — проверьте. Если ничего не изменится, значит не имеет)) |
ALFA Пользователь Сообщений: 243 |
#11 30.09.2014 19:05:06 Ошибка действительно пропала, но окно стало модальным и теперь невозможно выполнить следующее:
На фоне формы отображается эксель. |
||
Jack Пользователь Сообщений: 352 |
попробуйте тогда изменить параметр ShowModal в окне свойств юзерформы на False Изменено: Jack — 30.09.2014 19:10:53 |
ALFA Пользователь Сообщений: 243 |
|
Jack Пользователь Сообщений: 352 |
#14 30.09.2014 19:31:09 потестил.
приложение у меня скрывается. Изменено: Jack — 30.09.2014 19:31:26 |
||
ALFA Пользователь Сообщений: 243 |
У меня появляется ошибка, если приложение excel уже запущено(Открыт иной файл) на момент открытия файла, если я ставлю .show 0 то есть ошибка, если ставлю .show 1 то ошибка пропадает и application не скрывается. |
Doober Пользователь Сообщений: 2141 |
#16 30.09.2014 23:54:32
Все верно,код выполнится после закрытия формы.
Изменено: Doober — 01.10.2014 02:20:06 <#0> |
||||
bombowoz Пользователь Сообщений: 6 |
#17 25.11.2019 00:01:28 Доброго времени суток Всем. Год назад написал я макрос для Excel- файла с целью автоматизации деятельности своей и моих коллег. Суть макроса — запуск внешней ЕХЕ программы (самописаной) для получения от прибора данных и последующая интеграция данных в книгу Excel/
Основная проблема в том, что я не понимаю, почему перестало работать то, что полгода работало без проблем. Если-бы админы изменили что-то в политике безопасности, то у всех коллег одновременно перестало-бы работать. А так — через большие промежутки времени. Более того, что такого страшного в строке Где косяк? Почему перестало работать и как всё починить? Может есть другой способ запуска стороннего ЕХЕ-файла с параметрами (консольное приложение написано в CodeBlocks) и обязательным ожиданием ответного кода-завершения от него? (простой Shell не подходит)??? |
||
Юрий М Модератор Сообщений: 60390 Контакты см. в профиле |
#18 25.11.2019 00:06:03
А как это соотносится с данной темой (про ActiveX)? |
||
Hugo Пользователь Сообщений: 23137 |
Вообще скрипты vbs на этих машинах работают? Потому что бывает что это отключают из соображений безопасности, а как именно это реализовано — я не в курсе, может отключают на корню весь объект. |
БМВ Модератор Сообщений: 20940 Excel 2013, 2016 |
#20 25.11.2019 00:37:40
как правило блокируется запуск скрипта пользователем. Я б не стал горячится и отключать объект, так как полно системных скриптов, которые должны выполнятся, хотя бы даже установка принтеров через них сделана. а вот можно ли залочить Shell это вопрос мной не изученный. Как минимум яб проверил работу VBS, других его объектов например https://www.script-coding.com/WSH/FileSystemObject.html а уже потом бы решал. По вопросам из тем форума, личку не читаю. |
||
ZVI Пользователь Сообщений: 4328 |
#21 25.11.2019 02:06:52
В проекте установите ссылку на Tools — References — Windows Script Host Object Model и проверьте, работает ли такой код:
Если не работает, то проверьте свои права доступа (правый клик — свойства — Безопасность) на чтение и выполнение для файла C:WindowsSystem32wshom.ocx Изменено: ZVI — 25.11.2019 02:08:59 |
||||
bombowoz Пользователь Сообщений: 6 |
#22 25.11.2019 21:43:56
спасибо за участие Изменено: bombowoz — 25.11.2019 21:48:52 |
||
БМВ Модератор Сообщений: 20940 Excel 2013, 2016 |
Тут из запасников пришлось достать HTA и там wscript.Shell был , так в чистом виде в 10ке перестал работать, а если конвертить в exe то работает. По вопросам из тем форума, личку не читаю. |
bombowoz Пользователь Сообщений: 6 |
-э-э-э-э….. З.Ы.(извините, в VBA/VBS очень слаб, не пинайте ногами) |
БМВ Модератор Сообщений: 20940 Excel 2013, 2016 |
bombowoz, hta — ЭТО HTML Application. , то есть приложение которое работает с использованием движка браузера (в нутрях собственно HTML теги и миы или Java script. В чистом виде — означает ,что запускается HTA файл и, видимо, по соображениям безопасности в контенте этого процесса запрещен вызов SHELL, ну дабы зловреды не запустили чего. Блокировки объекта при вызове из VBS, VBA, я не замечал . По вопросам из тем форума, личку не читаю. |
bombowoz Пользователь Сообщений: 6 |
#26 26.11.2019 09:24:07
Проверил — работает на всех компах, если в чекбоксе (Tools — References — Windows Script Host Object Model) поставить птичку. Без птички не работает. P.S. А есть альтернатива запуска ЕХЕ помимо WshShell ? (чтобы можно было получать назад код завершения) |
||
bedvit Пользователь Сообщений: 2477 Виталий |
#27 26.11.2019 13:50:51
можно скомпилировать не ехе, а dll и запускать из VBA напрямую, не используя сторонние библиотеки. «Бритва Оккама» или «Принцип Калашникова»? |
||
ZVI Пользователь Сообщений: 4328 |
#28 26.11.2019 17:16:11
Если птички не жалко, то поставьте ее и используйте такой вариант кода:
Изменено: ZVI — 26.11.2019 17:16:35 |
||||
bombowoz Пользователь Сообщений: 6 |
#29 26.11.2019 17:52:51
Спасибо ещё раз — попробую. Отпишусь. |
||
bombowoz Пользователь Сообщений: 6 |
#30 27.11.2019 11:09:36 ZVI, — — работает.! |
title | keywords | f1_keywords | ms.prod | ms.assetid | ms.date | ms.localizationpriority |
---|---|---|---|---|---|---|
ActiveX component can’t create object or return reference to this object (Error 429) |
vblr6.chm1016046 |
vblr6.chm1016046 |
office |
b2eb3773-bc6e-4291-8c17-19f4038fe01b |
12/08/2018 |
medium |
ActiveX component can’t create object or return reference to this object (Error 429)
Creating objects requires that the object’s class be registered in the system registry and that any associated dynamic-link libraries (DLL) be available.
This error has the following causes and solutions:
-
The class isn’t registered. For example, the system registry has no mention of the class, or the class is mentioned, but specifies either a file of the wrong type or a file that can’t be found. If possible, try to start the object’s application. If the registry information is out of date or wrong, the application should check the registry and correct the information. If starting the application doesn’t fix the problem, rerun the application’s setup program.
-
A DLL required by the object can’t be used, either because it can’t be found, or it was found but was corrupted. Make sure all associated DLLs are available. For example, the Data Access Object (DAO) requires supporting DLLs that vary among platforms. You may have to rerun the setup program for such an object if that is what is causing this error.
-
The object is available on the machine, but it is a licensed Automation object, and can’t verify the availability of the license necessary to instantiate it.
Some objects can be instantiated only after the component finds a license key, which verifies that the object is registered for instantiation on the current machine. When a reference is made to an object through a properly installed type library or object library, the correct key is supplied automatically.
If the attempt to instantiate is the result of a CreateObject or GetObject call, the object must find the key. In this case, it may search the system registry or look for a special file that it creates when it is installed, for example, one with the extension .lic. If the key can’t be found, the object can’t be instantiated.
If an end user has improperly set up the object’s application, inadvertently deleted a necessary file, or changed the system registry, the object may not be able to find its key. If the key can’t be found, the object can’t be instantiated. In this case, the instantiation may work on the developer’s system, but not on the user’s system. It may be necessary for the user to reinstall the licensed object.
-
You are trying to use the GetObject function to retrieve a reference to a class created with Visual Basic. GetObject can’t be used to obtain a reference to a class created with Visual Basic.
-
Access to the object has explicitly been denied. For example, you may be trying to access a data object that’s currently being used and is locked to prevent deadlock situations. If that’s the case, you may be able to access the object at another time.
For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).
[!includeSupport and feedback]
by
·
Published
· Updated
When using your computer and you try to automate Microsoft Office applications with Visual Basic macros, you may receive the following error message:
“Run-time error ‘429’: ActiveX component can’t create object”
This happens when the Windows ‘COM’ cannot create the requested Automation object, and the Automation object is therefore unavailable to Visual Basic. However this error does not appear on all computers.
The Microsoft Office applications are automated using an automated server system, this is generally based on the Windows COM architecture. The COM, or Component Object Model architecture, is a binary-interface standard for software componentry.
What Causes The Runtime Error 429?
There are many reasons why the runtime 429 error occurs in Visual Basic. Some of the reasons why it occurs are below. It occurs if anyone of the statements are true:
- There is a mistake in the application.
- There is a mistake in the system configuration.
- There is a missing component.
- There is a damaged component.
How To Fix The Runtime Error 429
Step 1 – Make Sure Your Application Is Able To Work With Automation
The first step is to make sure that your application can work with automation, if it turns out that it’s not the case there is no point of it at all because you would be able to get it to work. In order to check whether your application is compatible with automation, you can simply troubleshoot it. To do this follow these steps:
- Click Start, select Run.
- Type the name of the application in e.g. to troubleshoot Microsoft Word type in Word.
- Press OK.
Step 2 – Re-register The Application
Re-registering the application will allow the automation server to read the application. You should do the follow steps for the program that’s causing an error. To re-register your application follow these steps:
- Click Start, select Run.
- Type C:Program FilesMicrosoft OfficeOfficeWord.ex/regsever.
- This is only an example showing you what you would do to re-register Microsoft Word.
Step 3 – Rename Normal.dot And Word.xlb
This step is needed because sometimes the Runtime Error 429 occur due to the automation failing, this is down to the Normal.dot template or Word.xlb resource file being corrupted to resolve this issue follow these steps:
- Search for all Normal.dot and Word.xlb file that are on your system and then rename them.
- Re run your automation test to see if it runs. If this happens it means the deleted files will be recreated along with their application.
- However it this is not the case then you need to rename the files back to the original names and re-use them.
Step 4 – Clean Out The Registry
- Download this registry cleaner
The ‘registry’ is an extremely important part of Windows, which is constantly being used by your computer system to help it run as smoothly as possible. Every time you use your system, 100’s of registry settings need to be read to help it recall many different settings & files that your system needs to run. Unfortunately, many of these settings become corrupt or damaged, leading to Runtime errors to show. You can ensure this is not such a big problem by using a ‘registry cleaner’ to scan through your system and repair any of these damaged settings. This is highly recommended and you can see our top recommended tool below: