Activex component can t create object word application

Аннотация

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

  • Перерегистрируйте приложение описанным ниже образом.

    1. Нажмите кнопку Пуск, а затем — Выполнить.

    2. В диалоговом окне Выполнить введите путь к серверу и в конце строки добавьте параметр /RegServer.

    3. Нажмите кнопку ОК.

      Приложение выполняется автоматически. Приложение будет перерегистрировано как COM-сервер.

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

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

    Чтобы изучить ключ пути, хранящийся для сервера, запустите редактор реестра Windows следующим образом:

    1. Нажмите кнопку Пуск, а затем — Выполнить.

    2. Введите regedit и нажмите кнопку ОК.

    3. Перейдите в раздел HKEY_CLASSES_ROOTCLSID.

      Идентификаторы CLSID для зарегистрированных серверов автоматизации в системе находятся под этим ключом.

    4. Чтобы найти раздел, представляющий приложение 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}

    5. Проверьте путь, чтобы убедиться, что он соответствует фактическому расположению файла.

    Примечание. Краткие пути могут иногда казаться правильными ошибочно. Например, Office и Microsoft Internet Explorer (если они установлены в расположениях по умолчанию) имеют короткий путь, аналогичный C:PROGRA~1MICROS~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.

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

    Временно переименуйте файлы 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, чтобы отключить сторонние надстройки:

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

    1. В меню Файл выберите пункт Параметры, а затем — Надстройки.

    2. Щелкните Управление надстройками COM и нажмите кнопку Перейти.

      Примечание Откроется диалоговое окно надстройки COM.

    3. Снимите флажок для любой сторонней надстройки и нажмите кнопку ОК.

    4. Перезапустите Outlook.

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

Если ни одна из предыдущих процедур не устраняет проблему, удалите и переустановите Office.

Дополнительные сведения см. в следующей статье Office:

Скачивание и установка или повторная установка Office 365 или Office 2016 на ПК или Mac

Ссылки

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

Начало работы с разработкой Office

Summary

When you use the New operator or the CreateObject function in Microsoft Visual Basic to create an instance of a Microsoft Office application, you may receive the following error message:

Run-time error ‘429’: ActiveX component can’t create object

This error occurs when the Component Object Model (COM) cannot create the requested Automation object, and the Automation object is, therefore, unavailable to Visual Basic. This error does not occur on all computers.

This article describes how to diagnose and resolve common problems that may cause this error.

More Information

In Visual Basic, there are several causes of error 429. The error occurs if any of the following conditions is 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.

To find the cause of the error, isolate the problem. If you receive the «429» error message on a client computer, use the following information to isolate and resolve the error in Microsoft Office applications.

Note Some of the following information may also apply to non-Office COM servers. However, this article assumes that you want to automate Office applications.

Examine the code

Before you troubleshoot the error, try to isolate a single line of code that may be causing the problem.

If you discover that a single line of code may be causing the problem, complete these procedures:

  • Make sure that the code uses explicit object creation.

    Problems are easier to identify if they are narrowed down to a single action. For example, look for implicit object creation that’s used as one of the following.

    Code sample 1

    Application.Documents.Add 'DON'T USE THIS!!

    Code sample 2

    Dim oWordApp As New Word.Application 'DON'T USE THIS!!
    '... some other code
    oWordApp.Documents.Add

    Both of these code samples use implicit object creation. Microsoft Office Word 2003 does not start until the variable is called at least one time. Because the variable may be called in different parts of the program, the problem may be difficult to locate. It may be difficult to verify that the problem is caused when the Application object is created or when the Document object is created.

    Instead, you can make explicit calls to create each object separately, as follows.

    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... some other code
    Set oDoc = oWordApp.Documents.Add

    When you make explicit calls to create each object separately, the problem is easier to isolate. This may also make the code easier to read.

  • Use the CreateObject function instead of the New operator when you create an instance of an Office application.

    The CreateObject function closely maps the creation process that most Microsoft Visual C++ clients use. The CreateObject function also permits changes in the CLSID of the server between versions. You can use the CreateObject function with early-bound objects and with late-bound objects.

  • Verify that the «ProgID» string that is passed to
    CreateObject is correct, and then verify that the «ProgID» string is version independent. For example, use the «Excel.Application» string instead of using the «Excel.Application.8» string. The system that fails may have an older version of Microsoft Office or a newer version of Microsoft Office than the version that you specified in the «ProgID» string.

  • Use the Erl command to report the line number of the line of code that does not succeed. This may help you debug applications that cannot run in the IDE. The following code tells you which Automation object cannot be created (Microsoft Word or 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

    Use the MsgBox function and the line number to track the error.

  • Use late-binding as follows:

    Dim oWordApp As Object

    Early-bound objects require their custom interfaces to be marshaled across process boundaries. If the custom interface cannot be marshaled during CreateObject or during New, you receive the «429» error message. A late-bound object uses the IDispatch system-defined interface that does not require a custom proxy to be marshaled. Use a late-bound object to verify that this procedure works correctly.

    If the problem occurs only when the object is early-bound, the problem is in the server application. Typically, you can reinstall the application as described in the «Examine the Automation Server» section of this article to correct the problem.

Examine the automation server

The most common reason for an error to occur when you use CreateObject or New is a problem that affects the server application. Typically, the configuration of the application or the setup of the application causes the problem. To troubleshoot, use following methods:

  • Verify that the Office application that you want to automate is installed on the local computer. Make sure that you can run the application. To do this, click Start, click
    Run, and then try to run the application. If you cannot run the application manually, the application will not work through automation.

  • Re-register the application as follows:

    1. Click Start, and then click Run.

    2. In the Run dialog box, type the path of the server, and then append /RegServer to the end of the line.

    3. Click OK.

      The application runs silently. The application is re-registered as a COM server.

    If the problem occurs because a registry key is missing, these steps typically correct the problem.

  • Examine the LocalServer32 key under the CLSID for the application that you want to automate. Make sure that the LocalServer32 key points to the correct location for the application. Make sure that the path name is in a short path (DOS 8.3) format. You do not have to register a server by using a short path name. However, long path names that include embedded spaces may cause problems on some systems.

    To examine the path key that is stored for the server, start the Windows Registry Editor, as follows:

    1. Click Start, and then click Run.

    2. Type regedit, and then click OK.

    3. Move to the HKEY_CLASSES_ROOTCLSID key.

      The CLSIDs for the registered automation servers on the system are under this key.

    4. Use the following values of the CLSID key to find the key that represents the Office application that you want to automate. Examine the LocalServer32 key of the CLSID key for the path.

      Office server

      CLSID key

      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}

    5. Check the path to make sure that it matches the actual location of the file.

    Note Short path names may seem correct when they are not correct. For example, both Office and Microsoft Internet Explorer (if they are installed in their default locations) have a short path that is similar to C:PROGRA~1MICROS~X (where
    X is a number). This name may not initially appear to be a short path name.

    To determine whether the path is correct, follow these steps:

    1. Click Start, and then click Run.

    2. Copy the value from the registry, and then paste the value in the Run dialog box.

      Note Remove the /automation switch before you run the application.

    3. Click OK.

    4. Verify that the application runs correctly.

      If the application runs after you click OK, the server is registered correctly. If the application does not run after you click OK, replace the value of the LocalServer32 key with the correct path. Use a short path name if you can.

  • Test for possible corruption of the Normal.dot template or of the Excel.xlb resource file. Problems may occur when you automate Microsoft Word or Microsoft Excel if either the Normal.dot template in Word or the Excel.xlb resource file in Excel is corrupted. To test these files, search the local hard disks for all instances of Normal.dot or of Excel.xlb.

    Note You may find multiple copies of these files. There is one copy of each of these files for each user profile that is installed on the system.

    Temporarily rename the Normal.dot files or the Excel.xlb files, and then rerun your automation test. Word and Excel both create these files if they cannot find them. Verify that the code works. If the code works when a new Normal.dot file is created, delete the files that you renamed. These files are corrupted. If the code does not work, you must revert these files to their original file names to save any custom settings that are saved in these files.

  • Run the application under the Administrator account. Office servers require Read/Write access to the registry and to the disk drive. Office servers may not load correctly if your current security settings deny Read/Write access.

Examine the system

System configuration may also cause problems for the creation of out-of-process COM servers. To troubleshoot, use the following methods on the system on which the error occurs:

  • Determine whether the problem occurs with any out-of-process server. If you have an application that uses a particular COM server (such as Word), test a different out-of-process server to make sure that the problem is not occuring in the COM layer itself. If you cannot create an out-of-process COM server on the computer, reinstall the OLE system files as described in the «Reinstalling Microsoft Office» section of this article, or reinstall the operating system to resolve the problem.

  • Examine the version numbers for the OLE system files that manage automation. These files are typically installed as a set. These files must match build numbers. An incorrectly configured setup utility can mistakenly install the files separately. This causes the files to be mismatched. To avoid problems in automation, examine the files to make sure that the files builds are matched.

    The automation files are located in the WindowsSystem32 directory. Examine the following files.

    File name

    Version

    Date modified

    Asycfilt.dll

    10.0.16299.15

    September 29, 2017

    Ole32.dll

    10.0.16299.371

    March 29, 2018

    Oleaut32.dll

    10.0.16299.431

    May 3, 2018

    Olepro32.dll

    10.0.16299.15

    September 29, 2017

    Stdole2.tlb

    3.0.5014

    September 29, 2017

    To examine the file version, right-click the file in Windows Explorer, and then click Properties. Note the last four digits of the file version (the build number) and the date that the file was last modified. Make sure that these values are the same for all the automation files.

    Note The following files are for Windows 10 Version 1709, build 16299.431. These numbers and dates are  examples only. Your values may be different.

  • Use the System Configuration utility (Msconfig.exe) to examine the services and system startup for third-party applications that might restrict running code in the Office application

    Note Disable the antivirus program only temporarily on a test system that is not connected to the network.

    Alternatively, follow these steps in Outlook to disable third-party add-ins:

    If this method resolves the problem, contact the third-party antivirus vendor for more information about an update to the antivirus program.

    1. On the File menu, click Options, and then click Add-ins.

    2. Click Manage COM add-ins, and then click Go.

      Note The COM add-ins dialog box opens.

    3. Clear the check box for any third-party add-in, and then click OK.

    4. Restart Outlook.

Reinstall Office

If none of the previous procedures resolve the problem, remove and then reinstall Office.

For more information, see the following Office article:

Download and install or reinstall Office 365 or Office 2016 on a PC or Mac

References

For more information about Office automation and code samples, go to the following Microsoft website:

Getting started with Office development

Need more help?

Want more options?

Explore subscription benefits, browse training courses, learn how to secure your device, and more.

Communities help you ask and answer questions, give feedback, and hear from experts with rich knowledge.

I am trying to save Word docs using Excel VBA, but I get the error

«ActiveX component can’t create object.»

When I debug, the error comes from the line: Set wrdApps = CreateObject("Word.Application").

It was working, then it started giving me this error.

Sub saveDoc()

Dim i As Integer
For i = 1 To 2661:
    Dim fname As String
    Dim fpath As String

    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    fname = ThisWorkbook.Worksheets(3).Range("H" & i).Value
    fpath = ThisWorkbook.Worksheets(3).Range("G" & i).Value

    Dim wrdApps As Object
    Dim wrdDoc As Object

    Set wrdApps = CreateObject("Word.Application")

    'the next line copies the active document- the ActiveDocument.FullName 
    ' is important otherwise it will just create a blank document
    wrdApps.documents.Add wrdDoc.FullName

    Set wrdDoc = wrdApps.documents.Open(ThisWorkbook.Worksheets(3).Range("f" & i).Value)
    ' do not need the Activate, it will be Activate
    wrdApps.Visible = False  

    ' the next line saves the copy to your location and name
    wrdDoc.SaveAs "I:YunRTEMP DOC & PDF" & fname

    'next line closes the copy leaving you with the original document
    wrdDoc.Close

    On Error GoTo NextSheet:
NextSheet:
    Resume NextSheet2
NextSheet2:
Next i

With Application
   .DisplayAlerts = True
   .ScreenUpdating = True
   .EnableEvents = True
End With

End Sub

Community's user avatar

asked Jun 26, 2013 at 18:03

user2525309's user avatar

3

I had an issue when upgrading from Windows 7 to 10 when bringing my hoard of VBA scripts with me.
Still not sure what the root cause of the error is, but in the mean time this piece of code worked for me.
This is a workaround that limits the need to have Word (or Outlook/Excel) already in open (manually) state, but should allow your script to run if you have your references set.
Just change "CreateObject(" to "GetObject(, ". This will tell the system to use an already open window.

The complete code to use would be:

Dim wrdApps As Object
Dim wrdDoc As Object
Set wrdApps = GetObject(, "Word.Application")

SeeYouInDisneyland's user avatar

answered Jul 11, 2018 at 23:28

user64773's user avatar

I recently had this happen to some code I had written. Out of nowhere (after running successfully for a few months), I would get the same Runtime Error ‘429’. This happened on two separate computers, the one I wrote and tested the code on months prior and the computer of the person who actually used the tool. It happened even though I used the original file on my machine and the user had been using his copy successfully for a few months, so I’m not convinced two separate files on two separate machines both got corrupted in the same manner. With that being said, I don’t have a good explanation of why this occurred. Mine would happen on a similar line of code:

Dim objFSO as Object
Set objFSO = CreateObj("Scripting.FileSystemObject")

I had the reference to the scripting library included and had done this successfully in the past.

I was able to fix the problem by changing from late to early binding on that object:

Dim objFSO as New Scripting.FileSystemObject

I have been switching everything over to early binding for some time now but this was some legacy code. A nice short little explanation on the difference between the two can be found here:
https://excelmacromastery.com/vba-dictionary/#Early_versus_Late_Binding

I’m not entirely certain why that fixed the problem, but hopefully it will help others in the future with similar issues.

answered Dec 5, 2019 at 16:19

user2731076's user avatar

user2731076user2731076

6091 gold badge6 silver badges19 bronze badges

Is wrdDoc initialised? Are you trying to use wrdDoc before the object has been Set?

wrdApps.documents.Add wrdDoc.FullName
Set wrdDoc = wrdApps.documents.Open(ThisWorkbook.Worksheets(3).Range("f" & i).Value)

Should the first line be ActiveDocument.FullName as in the comments? So:

wrdApps.documents.Add ActiveDocument.FullName

answered Sep 30, 2013 at 9:53

Simon Shirley's user avatar

0

Check that you have the Microsoft Excel Object Library and the Microsoft Office Object Library ticked in Tools > References and that they have been registered.

If they are ticked, you may need to run Detect and Repair from the Excel Help menu to make sure that the Office installation hasn’t corrupted in any way.

answered Oct 3, 2013 at 10:10

Simon Shirley's user avatar

In my case, the workbook appeared to be corrupted. Simply assigning a worksheet to a variable was throwing the error.

Dim ws as Worksheet
Set ws = ThisWorkbook.Worksheets("Data")

The workbook came directly from the client, so I’m not sure what they did with it, or how old it was but all the references appeared to be selected. Every other workbook with the same code was working correctly.

So to resolve the issue I copied the worksheets and modules to a new workbook and it worked without any issues.

Might not always be the best solution, but if you haven’t got any worksheets and modules, then it’s pretty easy.

answered Dec 3, 2019 at 8:31

Sam Martin's user avatar

Try this one.. i’ve encountered this a lot of time…

so I just run my excel by searching it (located on taskbar), then right click then «run as administrator»
or if you already created the excel file, open it from file>open>browse. avoid just double clicking the excel file to open directly.

answered Sep 9, 2018 at 8:49

Marvin Nario Machitar's user avatar

  • Remove From My Forums
  • Question

  • We ve got an error on access application with Office Word 2010 429 Activex can’t create object

    Dim appWord As Object

    Set appWord = CreateObject(«Word.Application»)

    Our application worked with word xp, 2003, 2007 and 2010Beta.

    We have not had any reference to microsoft office object library before.

    But we tried to had Microsoft office 14 object library and we don’t find it in the list. We just have Microsoft office 12 object librar, but it doesn’t worked…

    We tried to reinstall, it still not working and we try to install interop but we not see the reference…

Answers

  • Hi,

    We have access runtime XP installed for our application paralell the office of our users. The window is seven on the 3 test machine.

    We have found that it is the version «Click and run»
    which is not working with this code :

    Dim appWord as Word.Application
    Set appWord = New Word.Application

    We test on 2 office 2010 professionnal and it works ! We do not found any workaround for this.

    In conclusion, we have to recommand to our users to buy the expensive one (We do not know know if it’s done on purpose, but if yes, it’s a shame, I’m disappointed).

    • Marked as answer by

      Tuesday, September 28, 2010 7:55 AM

  • Hi Damien

    <<We have found that it is the version «Click and run»
    which is not working>>

    If you research this new technology, you’ll see that you’re not dealing with a «traditional» application. Here’s an extract from one blog entry I found

    «Products delivered via Click-to-Run execute in a virtual application environment on the local Operating System. This means that they have private copies of their files and settings, and that any changes they make are captured in the virtual environment.
    The effect is they don’t end up modifying any other software installed on the System. With few exceptions, only user data actually passes through the virtual environment to the local System. Click-to-Run users may notice that they have a virtual Q: drive
    on their PCs, this is the virtual file system used by Office.»

    (from
    http://windows7center.com/forums/office-2010/4779-introducing-click-run-office-2010-public-beta.html)

    Since this is not executing on the machine, but in a virtual environment, you apparently can’t address it using the «new» keyword.

    See also, for example:

    http://support.microsoft.com/kb/982434/en-us
    http://support.microsoft.com/kb/982431

    From some of my reading, the Click-to-run technology specifically protects the user from outside applications leveraging Office functionality (to do bad things). So the behavior you’re seeing is apparently consciously by design.


    Cindy Meister, VSTO/Word MVP

    • Marked as answer by
      Cindy Meister MVP
      Wednesday, September 29, 2010 8:22 AM

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:

  1. 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.
  2. 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
  3. Press the Windows Logo key + R to open a Run dialog.
  4. 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
  5. Press Enter.
  6. 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:

  1. Close any and all open applications.
  2. Make sure that you have the full name of the file specified by the error message noted down someplace safe.
  3. 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.
  4. 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
  5. 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:

  1. Click here if you are using Windows XP or here if you are using Windows Server 2003.
  2. Click on Download.
  3. Wait for the installer for Microsoft Windows Script to be downloaded.
  4. Once the installer has been downloaded, navigate to the directory it was downloaded to and run it.
  5. 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.

Photo of Kevin Arrows

Kevin Arrows

Kevin Arrows is a highly experienced and knowledgeable technology specialist with over a decade of industry experience. He holds a Microsoft Certified Technology Specialist (MCTS) certification and has a deep passion for staying up-to-date on the latest tech developments. Kevin has written extensively on a wide range of tech-related topics, showcasing his expertise and knowledge in areas such as software development, cybersecurity, and cloud computing. His contributions to the tech field have been widely recognized and respected by his peers, and he is highly regarded for his ability to explain complex technical concepts in a clear and concise manner.

Понравилась статья? Поделить с друзьями:
  • Activex component can create object excel 429
  • Activeworkbook saveas vba excel
  • Activewindow zoom excel vba
  • Activesheet vba excel это
  • Activesheet usedrange vba excel