Recibe el error en tiempo de ejecución 429 al automatizar aplicaciones de Office

Se aplica a: Office 2016Office 2013

Resumen


Cuando se usa el operador New o la función CreateObject en Microsoft Visual Basic para crear una instancia de una aplicación de Microsoft Office, es posible que aparezca el siguiente mensaje de error:
Error en tiempo de ejecución ' 429 ': el componente ActiveX no puede crear el objeto
Este error se produce cuando el modelo de objetos componentes (COM) no puede crear el objeto de automatización solicitado y, por consiguiente, el objeto de automatización no está disponible para Visual Basic. Este error no se produce en todos los equipos.En este artículo se describe cómo diagnosticar y resolver problemas comunes que pueden causar este error.

Más información


En Visual Basic, hay varias causas del error 429. El error se produce si se cumple alguna de las condiciones siguientes: 
  • Hay un error en la aplicación.
  • Hay un error en la configuración del sistema.
  • Falta un componente.
  • Hay un componente dañado.
Para encontrar la causa del error, aísle el problema. Si recibe el mensaje de error "429" en un equipo cliente, use la siguiente información para aislar y resolver el error en las aplicaciones de Microsoft Office.Nota Algunos de los siguientes datos también pueden aplicarse a servidores COM que no sean de Office. Sin embargo, en este artículo se supone que desea automatizar las aplicaciones de Office.

Examinar el código

Antes de solucionar el error, intente aislar una única línea de código que pueda estar causando el problema.Si descubre que una única línea de código puede estar causando el problema, complete estos procedimientos: 
  • Asegúrese de que el código usa la creación de objetos explícita. Los problemas son más fáciles de identificar si se limitan a una única acción. Por ejemplo, busque la creación de objetos implícita que se usa como uno de los siguientes. Ejemplo de código Nº 1
    Application.Documents.Add 'DON'T USE THIS!!
    Ejemplo de código 2
    Dim oWordApp As New Word.Application 'DON'T USE THIS!!'... some other codeoWordApp.Documents.Add
    Estos dos ejemplos de código usan la creación implícita de objetos. Microsoft Office Word 2003 no se inicia hasta que se llama a la variable al menos una vez. Dado que la variable puede llamarse en diferentes partes del programa, el problema puede ser difícil de encontrar. Puede ser difícil comprobar que el problema se produce al crear el objeto Application o al crear el objeto Document . En su lugar, puede hacer llamadas explícitas para crear cada objeto por separado, como se indica a continuación.
    Dim oWordApp As Word.ApplicationDim oDoc As Word.DocumentSet oWordApp = CreateObject("Word.Application")'... some other codeSet oDoc = oWordApp.Documents.Add
    Cuando se realizan llamadas explícitas para crear cada objeto por separado, el problema es más fácil de aislar. También puede hacer que el código sea más fácil de leer.
  • Use la función CreateObject en lugar del operador New cuando cree una instancia de una aplicación de Office. La función CreateObject está estrechamente relacionada con el proceso de creación que usan la mayoría de los clientes de Microsoft Visual C++. La función CreateObjecttambién permite cambios en el CLSID del servidor entre versiones. Puede usar la función CreateObjectcon objetos de enlace en tiempo de compilación y con objetos de enlace en tiempo de ejecución.
  • Compruebe que la cadena "ProgID" que se pasa a CreateObject es correcto y, a continuación, compruebe que la cadena "ProgID" es independiente de la versión. Por ejemplo, use la cadena "Excel. Application" en lugar de usar la cadena "Excel. Application. 8". El sistema que falla puede tener una versión anterior de Microsoft Office o una versión más reciente de Microsoft Office que la versión que especificó en la cadena "ProgID".
  • Use el comando ERL para notificar el número de línea de la línea de código que no se realiza correctamente. Esto puede ayudarte a depurar aplicaciones que no se ejecutan en el IDE. El código siguiente le indica que no se puede crear el objeto de automatización (Microsoft Word o 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 la función MsgBox y el número de línea para realizar un seguimiento del error.
  • Use el enlace en tiempo de ejecución de la siguiente manera:
    Dim oWordApp As Object
    Los objetos de enlace en tiempo de compilación requieren que las referencias de sus interfaces personalizadas se calculen a través de los límites del proceso. Si la interfaz personalizada no se puede calcular durante la conversión de CreateObject o durante la nueva, recibirá el mensaje de error "429". Un objeto de enlace en tiempo de ejecución usa la interfaz definida por el sistema IDispatch que no requiere que se calculen las referencias de un proxy personalizado. Use un objeto de enlace en tiempo de ejecución para comprobar que este procedimiento funciona correctamente. Si el problema solo se produce cuando el objeto es de enlace en tiempo de compilación, el problema se encuentra en la aplicación de servidor. Normalmente, puede reinstalar la aplicación según se describe en la sección "examinar el servidor de automatización" de este artículo para corregir el problema.

Examinar el servidor de automatización

La causa más común de que se produzca un error al usar CreateObject o New es un problema que afecta a la aplicación de servidor. Normalmente, la configuración de la aplicación o la configuración de la aplicación causa el problema. Para solucionar problemas, use los métodos siguientes:

  • Compruebe que la aplicación de Office que desea automatizar está instalada en el equipo local. Asegúrese de que puede ejecutar la aplicación. Para ello, haga clic en Inicio, haga clic en Ejecutey, a continuación, intente ejecutar la aplicación. Si no puede ejecutar la aplicación manualmente, la aplicación no funcionará a través de la automatización.
  • Vuelva a registrar la aplicación de la siguiente manera:  
    1. Haga clic en Inicioy, a continuación, en Ejecutar.
    2. En el cuadro de diálogo Ejecutar , escriba la ruta de acceso del servidor y, después, anexe /regserver al final de la línea.
    3. Haga clic en Aceptar. La aplicación se ejecuta en modo silencioso. La aplicación se vuelve a registrar como un servidor COM.
    Si el problema se produce porque falta una clave del registro, estos pasos suelen corregir el problema.
  • Examine la clave LocalServer32 bajo el CLSID de la aplicación que desea automatizar. Asegúrese de que la clave LocalServer32 señala a la ubicación correcta para la aplicación. Asegúrese de que el nombre de la ruta de acceso está en un formato corto (DOS 8,3). No es necesario registrar un servidor con un nombre de ruta de acceso corto. Sin embargo, los nombres de ruta largos que incluyen espacios insertados pueden causar problemas en algunos sistemas. Para examinar la clave de ruta de acceso que se almacena para el servidor, inicie el editor del registro de Windows de la siguiente manera:  
    1. Haga clic en Inicioy, a continuación, en Ejecutar.
    2. Escriba regedity, a continuación, haga clic en Aceptar.
    3. Vaya a la clave de \CLSID HKEY_CLASSES_ROOT. Los CLSID de los servidores de automatización registrados en el sistema están bajo esta clave.
    4. Use los siguientes valores de la clave CLSID para buscar la clave que representa la aplicación de Office que desea automatizar. Examine la clave LocalServer32 de la clave CLSID para la ruta de acceso.  
      Servidor de Office Clave 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. Compruebe la ruta de acceso para asegurarse de que coincide con la ubicación real del archivo.
    Nota Los nombres cortos de la ruta de acceso pueden parecer correctos cuando no son correctos. Por ejemplo, tanto Office como Microsoft Internet Explorer (si están instalados en sus ubicaciones predeterminadas) tienen una ruta corta similar a C:\PROGRA ~ 1 \ MICROs ~X\ (donde X es un número). Es posible que este nombre no aparezca inicialmente como un nombre de ruta de acceso corto. Para determinar si la ruta de acceso es correcta, siga estos pasos:  
    1. Haga clic en Inicioy, a continuación, en Ejecutar.
    2. Copie el valor del registro y, a continuación, pegue el valor en el cuadro de diálogo Ejecutar . Nota Quite el modificador /Automation antes de ejecutar la aplicación.
    3. Haga clic en Aceptar.
    4. Compruebe que la aplicación se ejecuta correctamente. Si la aplicación se ejecuta después de hacer clic en Aceptar, el servidor se registra correctamente. Si la aplicación no se ejecuta después de hacer clic en Aceptar, reemplace el valor de la clave LocalServer32 por la ruta de acceso correcta. Use un nombre de ruta corto, si es posible.
  • Pruebe si puede haber daños en la plantilla normal. dot o en el archivo de recursos Excel. xlb. Pueden surgir problemas al automatizar Microsoft Word o Microsoft Excel si la plantilla normal. dot en Word o el archivo de recursos Excel. XLB en Excel está dañado. Para probar estos archivos, busque todas las instancias de normal. dot o de Excel. XLB en los discos duros locales. Nota Es posible que encuentre varias copias de estos archivos. Hay una copia de cada uno de estos archivos por cada perfil de usuario instalado en el sistema. Cambie temporalmente el nombre de los archivos normal. dot o Excel. XLB y, a continuación, vuelva a ejecutar la prueba de automatización. Tanto Word como Excel crean estos archivos si no pueden encontrarlos. Compruebe que el código funciona. Si el código funciona cuando se crea un nuevo archivo normal. dot, elimine los archivos cuyo nombre ha cambiado. Estos archivos están dañados. Si el código no funciona, debe revertir estos archivos a sus nombres de archivo originales para guardar la configuración personalizada guardada en estos archivos.
  • Ejecute la aplicación con la cuenta de administrador. Los servidores de Office requieren acceso de lectura y escritura al registro y a la unidad de disco. Es posible que los servidores de Office no se carguen correctamente si la configuración de seguridad actual deniega el acceso de lectura y escritura.

Examinar el sistema

La configuración del sistema también puede causar problemas para la creación de servidores COM fuera de proceso. Para solucionar problemas, use los siguientes métodos en el sistema en el que se produce el error:

  • Determine si el problema se produce con cualquier servidor fuera de proceso. Si tiene una aplicación que usa un servidor COM en particular (como Word), pruebe otro servidor fuera de proceso para asegurarse de que el problema no se produce en la capa COM en sí. Si no puede crear un servidor COM fuera de proceso en el equipo, vuelva a instalar los archivos de sistema OLE según se describe en la sección "reinstalar Microsoft Office" de este artículo, o vuelva a instalar el sistema operativo para resolver el problema.
  • Examine los números de versión de los archivos de sistema OLE que administran la automatización. Normalmente, estos archivos se instalan como un conjunto. Estos archivos deben coincidir con los números de compilación. Una utilidad de configuración mal configurada puede instalar erróneamente los archivos por separado. Esto hace que los archivos no coincidan. Para evitar problemas de automatización, examine los archivos para asegurarse de que las compilaciones de archivos coinciden. Los archivos de automatización se encuentran en el directorio Windows\System32. Examine los siguientes archivos.  
    Nombre de archivo Versión Fecha de modificación
    Asycfilt.dll 10.0.16299.15 29 de septiembre de 2017
    Ole32.dll 10.0.16299.371 29 de marzo de 2018
    Oleaut32.dll 10.0.16299.431 3 de mayo de 2018
    Olepro32.dll 10.0.16299.15 29 de septiembre de 2017
    Stdole2.tlb 3.0.5014 29 de septiembre de 2017
    Para examinar la versión del archivo, haga clic con el botón derecho en el archivo en el explorador de Windows y, a continuación, haga clic en propiedades. Observe los últimos cuatro dígitos de la versión del archivo (el número de compilación) y la fecha en la que se modificó por última vez el archivo. Asegúrese de que estos valores son los mismos para todos los archivos de automatización. Nota Los siguientes archivos son para Windows 10 versión 1709, compilación 16299,431. Estos números y fechas son solo ejemplos. Puede que sus valores sean diferentes.  
  • Use la utilidad de configuración del sistema (Msconfig. exe) para examinar los servicios y el inicio del sistema para aplicaciones de terceros que pueden restringir la ejecución de código en la aplicación de Office. Para obtener más información acerca de msconfig. exe, consulte el siguiente artículo de Microsoft Knowledge Base:
    181966 Configuración avanzada de solución de problemas del programa de configuración del sistema
    Por ejemplo, es posible que las aplicaciones de automatización de Outlook no funcionen correctamente porque está ejecutando un programa antivirus con características "bloqueador de scripts". Nota Deshabilite el programa antivirus solo temporalmente en un sistema de prueba que no esté conectado a la red. Como alternativa, siga estos pasos en Outlook para deshabilitar los complementos de terceros: Si este método resuelve el problema, póngase en contacto con el proveedor de antivirus de terceros para obtener más información sobre la actualización del programa antivirus.  
    1. En el menú archivo , haga clic en Opcionesy, a continuación, haga clic en Complementos.
    2. Haga clic en Administrar complementos comy, a continuación, haga clic en ir. Nota Se abrirá el cuadro de diálogo complementos com .
    3. Desactive la casilla de verificación de cualquier complemento de terceros y, a continuación, haga clic en Aceptar.
    4. Reinicie Outlook.

Reinstalar Office

Si ninguno de los procedimientos anteriores resuelve el problema, quite y vuelva a instalar Office.

Para obtener más información, vea el siguiente artículode Office:

Referencias


Para obtener más información sobre la automatización de Office y ejemplos de código, vaya al siguiente sitio web de Microsoft: