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

Применимо к: Microsoft Office Excel 2007Microsoft Office Outlook 2007Microsoft Office Outlook 2003

Версия данной статьи для 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 '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
    При использовании явных вызовов для создания каждого объекта по отдельности изолировать проблему легче. Это также может сделать код более удобным для чтения.

  • При создании экземпляра приложения Microsoft Office используйте функцию CreateObject вместо оператора New.

    Функция CreateObject устанавливает тесное соответствие с процессом создания, который используется большинством клиентов Microsoft Visual C++. Функция CreateObject также позволяет изменять идентификатор CLSID сервера между версиями. Функцию CreateObject можно использовать с объектами с ранней и поздней привязкой.
  • Убедитесь, что строка "ProgID", переданная функции
    CreateObject, является верной, а затем убедитесь, что она не зависит от версии. Например, используйте строку "Excel.Application" вместо строки "Excel.Application.8". В системе, где возникает проблема, может быть установлена более старая или более новая версия Microsoft Office, отличная от версии, указанной в строке "ProgID".
  • Используйте команду Erl, чтобы вывести номер строки кода, в которой возникает ошибка. Это может облегчить отладку приложений, которые не запускаются в интегрированной среде разработки. Следующий код сообщает, какой объект
    Automation не удается создать (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 или оператора 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.dll 3.50.5014 4 сентября 2002 г.
    Oleaut32.dll 3.50.5016 4 сентября 2002 г.
    Olepro32.dll 5.0.5014 4 сентября 2002 г.
    Stdole2.tlb 3.0.5014 4 сентября 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, используя исходные установочные диски.

Дополнительные сведения см. в следующей статье базы знаний Майкрософт:

158658 Полное удаление Microsoft Office 97
 

Ссылки


Дополнительные сведения об устранении неполадок, приводящих к появлению сообщения об ошибке 429, см. в следующей статье базы знаний Майкрософт:

240377 Проверка правильности установки Jet 3.5 (часть I)

Дополнительные сведения об автоматизации Microsoft Office и примеры кода см. на следующем веб-сайте Майкрософт: