Возникновение ошибки времени выполнения 429 при автоматизации приложений Microsoft Office

Переводы статьи Переводы статьи
Код статьи: 828550 - Vizualiza?i produsele pentru care se aplic? acest articol.
Версия данной статьи для Microsoft Office XP, Office 2000 и Office 97:244264 (Эта ссылка может указывать на содержимое полностью или частично на английском языке).
Развернуть все | Свернуть все

В этой статье

Аннотация

При использовании в Microsoft Visual Basic оператора New или функции CreateObject для создания экземпляра приложения Microsoft Office может появиться приведенное ниже сообщение об ошибке.
Ошибка времени выполнения '429': Компоненту ActiveX не удается создать объект
Данная ошибка возникает, когда модели COM (Component Object Model) не удается создать необходимый объект Automation, и поэтому объект Automation оказывается недоступен для Visual Basic. Эта ошибка возникает не на всех компьютерах.

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

Дополнительная информация

В Visual Basic существует несколько причин возникновения ошибки 429, перечисленных ниже.
  • Наличие ошибки в приложении.
  • Наличие ошибки в конфигурации системы.
  • Отсутствие какого-либо компонента.
  • Наличие поврежденного компонента.
Чтобы найти причину возникновения ошибки, необходимо изолировать проблему. Если ошибка 429 возникает на клиентском компьютере, используйте приведенные ниже сведения, чтобы изолировать и устранить ошибку в приложениях Microsoft Office.

Примечание. Некоторые из приведенных ниже сведений применимы к COM-серверам без Microsoft Office. Однако в данной статье предполагается, что ошибка связана с автоматизацией приложений Microsoft Office.

Проверка кода

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

В случае обнаружения отдельной строки кода, которая является причиной возникновения проблемы, выполните перечисленные ниже действия.
  • Проверьте, что в коде используется явное создание объекта.

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

    Пример кода 1
    Application.Documents.Add 'НЕ ИСПОЛЬЗУЙТЕ ЭТОТ ПРИМЕР!
    Пример кода 2
    Dim oWordApp As New Word.Application 'НЕ ИСПОЛЬЗУЙТЕ ЭТОТ ПРИМЕР!
    '... другие строки кода
    oWordApp.Documents.Add
    В обоих примерах используется неявное создание объекта. Microsoft Office Word 2003 не запускается до первого вызова переменной. Поскольку код вызова переменной может быть расположен в различных частях программы, локализация проблемы может оказаться непростой задачей. Бывает сложно определить, когда возникает проблема: при создании объекта Application или при создании объекта Document.

    Вместо этого можно указать явные вызовы для создания каждого объекта в отдельности, как показано ниже.
    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... другие строки кода
    Set oDoc = oWordApp.Documents.Add
    При использовании явных вызовов для создания каждого объекта в отдельности проблему легче изолировать. Это также может сделать код более удобным для чтения.
  • Используйте при создании экземпляра приложения Microsoft Office функцию CreateObject вместо оператора New.

    Функция CreateObject устанавливает тесное соответствие с процессом создания, который используется большинством клиентов Microsoft Visual C++. Функция CreateObject также позволяет изменять идентификатор CLSID сервера между версиями. Функцию CreateObject можно использовать с объектами с ранней и поздней привязкой.
  • Проверьте независимость от версии и правильность строки "ProgID", которая передается функции CreateObject. Например, используйте строку "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")
     	
     	' ... другие строки кода
     	
     	err_handler:
     	  MsgBox "Сбой в строке кода " & Erl, vbCritical
    Используйте функцию MsgBox и номер строки для отслеживания ошибки.
  • Используйте позднюю привязку следующим образом:
    Dim oWordApp As Object
    Для объектов с ранней привязкой необходимо, чтобы их настраиваемые интерфейсы были переданы через границы процессов. Если пользовательский интерфейс не может быть передан при выполнении функции CreateObject или оператора New, появляется сообщение об ошибке 429. Объект с поздней привязкой использует определенный системой интерфейс IDispatch, который не требует для передачи настраиваемого посредника. Чтобы проверить правильность работы этой процедуры, используйте объект с поздней привязкой.

    Если проблема возникает только при использовании объекта с ранней привязкой, это свидетельствует о наличии проблемы в серверном приложении. Как правило, чтобы устранить проблему, достаточно переустановить приложение, как описано в разделе "Проверка сервера автоматизации" данной статьи.

Проверка сервера автоматизации

Наиболее распространенной причиной возникновения ошибки при выполнении функции CreateObject или оператора New является проблема с серверным приложением. Обычно причиной возникновения проблемы является установка или конфигурация приложения. Чтобы устранить неполадки, выполните перечисленные ниже действия.
  • Убедитесь в том, что приложение Microsoft Office, которое необходимо автоматизировать, установлено на локальном компьютере. Убедитесь в возможности запуска приложения. Для этого нажмите кнопку Пуск, выберите пункт Выполнить, а затем попытайтесь запустить приложение. Если приложение не запускается вручную, его нельзя автоматизировать.
  • Перерегистрируйте приложение описанным ниже образом.
    1. Нажмите кнопку Пуск и выберите пункт Выполнить.
    2. В диалоговом окне Выполнить введите путь к серверу и в конце строки добавьте параметр /RegServer.
    3. Нажмите кнопку ОК.

      Приложение будет запущено без запроса. Приложение будет перерегистрировано как COM-сервер.
    Если причиной возникновения проблемы является отсутствие раздела реестра, в большинстве случаев выполнение перечисленных ниже действий приводит к устранению проблемы.
  • Проверьте раздел LocalServer32 в разделе CLSID приложения, которое необходимо автоматизировать. Убедитесь в том, что раздел LocalServer32 указывает на правильное местоположение приложения. Проверьте, чтобы путь был указан в кратком формате (DOS 8.3). Сервер не обязательно регистрировать с использованием краткого пути. Однако длинные пути, включающие пробелы, в некоторых системах могут являться причиной возникновения проблем.

    Чтобы проверить раздел пути, сохраненного для сервера, запустите редактор реестра описанным ниже образом.
    1. Нажмите кнопку Пуск и выберите пункт Выполнить.
    2. Введите команду regedit и нажмите кнопку ОК.
    3. Перейдите в раздел HKEY_CLASSES_ROOT\CLSID.

      В этом разделе содержатся коды CLSID зарегистрированных серверов автоматизации в системе.
    4. Чтобы найти раздел, представляющий приложение Microsoft Office, которое необходимо автоматизировать, используйте приведенные ниже значения раздела CLSID. Поверьте в разделе CLSID путь, указанный в разделе LocalServer32.
      Свернуть эту таблицуРазвернуть эту таблицу
      Сервер Microsoft Office ServerРаздел CLSID
      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}
    5. Проверьте, чтобы путь соответствовал реальному местоположению файла.
    Примечание. Краткие пути могут иногда ошибочно казаться правильными. Например, Microsoft Office и Microsoft Internet Explorer (если они установлены в папки по умолчанию) имеют краткий путь вида C:\PROGRA~1\MICROS~X\ (где X — это число). Этот путь может сначала не показаться кратким путем.

    Чтобы определить, что путь указан верно, выполните перечисленные ниже действия.
    1. Нажмите кнопку Пуск и выберите пункт Выполнить.
    2. Скопируйте значение из реестра, а затем вставьте это значение в поле диалогового окна Выполнить.

      Примечание. Перед запуском приложения удалите параметр /automation.
    3. Нажмите кнопку ОК.
    4. Проверьте правильность запуска приложения.

      Если приложение запускается после нажатия кнопки ОК, сервер зарегистрирован правильно. Если приложение не запускается после нажатия кнопки ОК, замените значение раздела LocalServer32 на правильный путь. По возможности используйте краткий путь.
  • Проверьте шаблон Normal.dot или файл ресурсов Excel.xlb на предмет возможного повреждения. Проблемы при автоматизации Microsoft Word или Microsoft Excel могут возникать вследствие повреждения шаблона Normal.dot в Microsoft Word или файла ресурсов Excel.xlb в Microsoft Excel. Чтобы проверить эти файлы, выполните поиск всех экземпляров Normal.dot или Excel.xlb на локальном жестком диске.

    Примечание. В системах с Microsoft Windows 2000 или Microsoft Windows XP может присутствовать несколько копий этих файлов. Для каждого профиля пользователя, установленного в системе, имеется одна копия каждого из этих файлов.

    Временно переименуйте файлы Normal.dot или Excel.xlb и повторно запустите проверку автоматизации. Если Microsoft Word и Microsoft Excel не находят эти файлы, они создают их снова. Убедитесь, что код работает. Если при создании нового файла Normal.dot код работает, удалите переименованные файлы. Эти файлы повреждены. Если код не работает, необходимо обратно переименовать эти файлы, чтобы сохранить пользовательские параметры, сохраненные в этих файлах.
  • На компьютере с операционной системой Windows 2000 можно запустить приложение с учетной записью администратора. Серверы Microsoft Office Server должны иметь доступ на чтение и запись к реестру и дисковому накопителю. Если текущие параметры безопасности запрещают доступ на чтение и запись, загрузка серверов Microsoft Office Server может выполняться с ошибками.

Проверка системы

Конфигурация системы также может являться причиной возникновения проблем при создании COM-серверов вне процесса. Чтобы устранить неполадки в системе, в которой возникают ошибки, выполните перечисленные ниже действия.
  • Определите, возникает ли проблема с каким-либо сервером вне процесса. Если приложение использует определенный COM-сервер (например, Microsoft Word), проверьте другой сервер вне процесса, чтобы убедиться в том, что проблема не связана непосредственно с уровнем COM. Если на компьютере не удается создать COM-сервер вне процесса, переустановите системные файлы OLE, как описано в разделе "Переустановка Microsoft Office" данной статьи, или переустановите операционную систему, чтобы устранить проблему.
  • Проверьте номера версий системных файлов OLE, которые управляют автоматизацией. Эти файлы обычно устанавливаются в наборе. Номера сборки этих файлов должны совпадать. Неправильно настроенная программа установки может ошибочно установить файлы по отдельности. В этом случае файлы не будут сочетаться. Чтобы избежать проблем при автоматизации, убедитесь, что номера сборки этих файлов совпадают.

    Файлы автоматизации расположены в каталоге Windows\System32 или в каталоге Winnt\System32. Проверьте перечисленные ниже файлы.
    Свернуть эту таблицуРазвернуть эту таблицу
    Имя файлаВерсияДата изменения
    Asycfilt.dll3.50.50144 сентября 2002 г.
    Oleaut32.dll3.50.50164 сентября 2002 г.
    Olepro32.dll5.0.50144 сентября 2002 г.
    Stdole2.tlb3.0.50144 сентября 2002 г.
    Чтобы проверить версию файла, щелкните файл в проводнике правой кнопкой мыши и выберите пункт Свойства. Обратите внимание на последние четыре цифры в версии файла (номер сборки) и дату последнего изменения файла. Убедитесь в том, что эти значения одинаковы для всех файлов автоматизации.

    Примечание. Указанные выше номера и даты получены на компьютере с Windows Server 2003 и установленным Microsoft Office 2003. Эти номера и даты приведены в качестве примеров. Реальные значения могут быть иными.

    Если номера сборок или даты изменений файлов не совпадают, загрузите самораскрывающуюся служебную программу для обновления файлов автоматизации.

    Дополнительные сведения о доступе к исполняемым файлам см. в следующей статье базы знаний Майкрософт:
    235420 Пакет Vbrun60sp4.exe устанавливает исполняемые файлы Visual Basic 6.0 с пакетом обновления 4 (SP4) (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
  • Используйте программу настройки системы (Msconfig.exe) для проверки служб и раздела загрузки системы на наличие приложений сторонних разработчиков, которые могут ограничивать выполнение кода в приложении Microsoft Office. Дополнительные сведения о программе Msconfig.exe см. в следующей статье базы знаний Майкрософт:
    310560 Устранение неполадок в работе Windows XP с помощью программы настройки системы
    Например, приложения автоматизации Microsoft Outlook могут не работать из-за антивирусной программы, которая имеет функцию блокировки сценариев.

    Примечание. Временно отключать антивирусную программу можно только на специально предназначенном для проверки компьютере, не подключенном к сети.

    Вместо этого для отключения в Microsoft Outlook надстроек сторонних разработчиков можно выполнить перечисленные ниже действия.
    1. В меню Сервис выберите пункт Параметры.
    2. На вкладке Дополнительно нажмите кнопку Дополнительные параметры .
    3. В диалоговом окне Дополнительные параметры нажмите кнопку Диспетчер надстроек.
    4. Снимите флажки для всех надстроек сторонних разработчиков.
    5. Перезапустите программу Outlook.
    Если эти действия устраняют проблему, свяжитесь со сторонним поставщиком антивирусной программы для получения дополнительных сведений об обновлении антивирусной программы.

Переустановка Microsoft Office

Если ни одно из предыдущих действий не привело к устранению проблемы, удалите, а затем повторно установите Microsoft Office. Корпорация Майкрософт рекомендует сначала удалить имеющуюся версию, а затем переустановить Microsoft Office, используя исходные установочные диски.

Дополнительные сведения см. в следующих статьях базы знаний Майкрософт:
219423 OFF2000: Полное удаление компакт-диска 1 Microsoft Office
158658 Полное удаление Microsoft Office 97 (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Ссылки

Дополнительные сведения об устранении неполадок, приводящих к появлению сообщения об ошибке '429', см. в следующей статье базы знаний Майкрософт:
240377 Проверка правильности установки Jet 3.5 (часть I) (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
Дополнительные сведения об автоматизации Microsoft Office и образцы кода см. на следующем веб-узле Майкрософт:
http://support.microsoft.com/ofd

Свойства

Код статьи: 828550 - Последний отзыв: 16 июля 2013 г. - Revision: 5.4
Информация в данной статье относится к следующим продуктам.
  • Microsoft Office Excel 2007
  • Microsoft Office SharePoint Designer 2007
  • Microsoft Office Outlook 2007
  • Microsoft Office Outlook 2003
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft Office Word 2007
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Professional Edition
Ключевые слова: 
kbexpertisebeginner kbtshoot kbprogramming kberrmsg kbautomation kbinfo KB828550

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com