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

Se aplica a
Office 2016 Office 2013

Resumen

Cuando utiliza el operador Nuevo o la función CreateObject en Microsoft Visual Basic para crear una instancia de una aplicación de Microsoft Office, puede recibir el mensaje de error siguiente:

Nota

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 lo tanto, 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 provocar 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 solicitud.
  • 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 Es posible que parte de la siguiente información también se aplique a los servidores COM que no sean de Office. Sin embargo, en este artículo se asume que desea automatizar las aplicaciones de Office.

Examinar el código

Antes de solucionar el error, intente aislar una sola línea de código que pueda estar causando el problema.

Si descubre que una sola línea de código puede estar causando el problema, complete estos procedimientos:

  • Asegúrese de que el código usa la creación explícita de objetos.

    Los problemas son más fáciles de identificar si se reducen a una sola acción. Por ejemplo, busque la creación de objetos implícitos que se use como uno de los siguientes.

    Ejemplo de código 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 code
    oWordApp.Documents.Add
    

    Ambos ejemplos de código utilizan la creación de objetos implícitos. Microsoft Office Word 2003 no se inicia hasta que se llama a la variable al menos una vez. Debido a que la variable se puede llamar en diferentes partes del programa, el problema puede ser difícil de localizar. Puede ser difícil comprobar si el problema se produce cuando se crea el objeto Application o cuando se crea el objeto Document .

    En su lugar, puede realizar llamadas explícitas para crear cada objeto por separado, como se indica a continuación.

    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... some other code
    Set 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. Esto también puede facilitar la lectura del código.

  • Use la función CreateObject en lugar del operador Nuevo al crear una instancia de una aplicación de Office.

    La función CreateObject asigna estrechamente el proceso de creación que usan la mayoría de los clientes de Microsoft Visual C++. La función CreateObject también permite cambios en el CLSID del servidor entre versiones. Puede utilizar la función CreateObject con objetos enlazados en compilación y con objetos enlazados en última fecha.

  • 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 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 ayudarle a depurar aplicaciones que no pueden ejecutarse en el IDE. El código siguiente indica qué objeto de automatización no se puede crear (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 enlaces en tiempo de ejecución como se indica a continuación:

    Dim oWordApp As Object
    

    Los objetos enlazados en versiones anteriores requieren que sus interfaces personalizadas tengan serialización a través de los límites del proceso. Si no se pueden calcular las referencias de la interfaz personalizada durante CreateObject o durante Nuevo, recibirá el mensaje de error "429". Un objeto enlazado en tiempo de ejecución utiliza la interfaz definida por el sistema IDispatch que no requiere que se calculen las referencias de un proxy personalizado. Utilice un objeto enlazado en tiempo de ejecución para comprobar que este procedimiento funciona correctamente.

    Si el problema solo se produce cuando el objeto está enlazado en tiempo de compilación, el problema está en la aplicación del servidor. Normalmente, puede reinstalar la aplicación como 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 razón más común por la que se produce un error al usar CreateObject o Nuevo es un problema que afecta a la aplicación del servidor. Normalmente, la configuración de la aplicación o la instalación de la aplicación causa el problema. Para ello, siga estos métodos:

  • 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, en
    Ejecute e 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 como se indica aquí:

    1. Haga clic en Inicio y, después, en Ejecutar.

    2. En el cuadro de diálogo Ejecutar , escriba la ruta de acceso del servidor y, a continuación, agregue /RegServer al final de la línea.

    3. Haga clic en Aceptar.

      La aplicación se ejecuta de forma silenciosa. La aplicación se registra de nuevo como servidor COM.

    Si el problema se produce porque falta una clave del Registro, normalmente estos pasos corrigen el problema.

  • Examine la clave LocalServer32 en el CLSID para la aplicación que desea automatizar. Asegúrese de que la clave LocalServer32 apunte a la ubicación correcta para la aplicación. Asegúrese de que el nombre de la ruta de acceso tenga un formato de ruta de acceso corta (DOS 8.3). No es necesario registrar un servidor con un nombre de ruta de acceso corto. Sin embargo, los nombres de ruta de acceso largos que incluyen espacios incrustados pueden causar problemas en algunos sistemas.

    Para examinar la clave de ruta de acceso almacenada para el servidor, inicie el Editor del Registro de Windows, como se indica a continuación:

    1. Haga clic en Inicio y, después, en Ejecutar.

    2. Escriba regedit y, a continuación, haga clic en Aceptar.

    3. Desplazarse a la tecla HKEY_CLASSES_ROOT\CLSID.

      Los CLSID de los servidores de automatización registrados en el sistema se encuentran en 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. Aplicación {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 de rutas cortas pueden parecer correctos cuando no lo son. Por ejemplo, tanto Office como Microsoft Internet Explorer (si se instalan en sus ubicaciones predeterminadas) tienen una ruta de acceso corta similar a C:\PROGRA~1\MICROS~X\ (donde
    X es un número). Es posible que este nombre no parezca inicialmente un nombre de ruta corta.

    Para determinar si la ruta de acceso es correcta, siga estos pasos:

    1. Haga clic en Inicio y, después, en Ejecutar.

    2. Copie el valor del Registro y, a continuación, péguelo 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 ha registrado correctamente. Si la aplicación no se ejecuta después de hacer clic en Aceptar, sustituya el valor de la clave LocalServer32 por la ruta correcta. Use un nombre de ruta corto si puede.

  • Compruebe si la plantilla Normal.dot o el archivo de recursos Excel.xlb están dañados. Pueden producirse 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án dañados. Para probar estos archivos, busque en los discos duros locales todas las instancias de Normal.dot o de Excel.xlb.

    Nota Puede encontrar varias copias de estos archivos. Hay una copia de cada uno de estos archivos para 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 los encuentran. Compruebe que el código funciona. Si el código funciona cuando se crea un nuevo archivo Normal.dot, elimine los archivos cuyo nombre cambió. Estos archivos están dañados. Si el código no funciona, debe revertir estos archivos a sus nombres de archivo originales para guardar cualquier configuración personalizada que se haya guardado en estos archivos.

  • Ejecute la aplicación en 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 solucionarlos, utilice los siguientes métodos en el sistema donde se produce el error:

  • Determine si el problema se produce con algún servidor fuera de proceso. Si tiene una aplicación que utiliza un servidor COM determinado (como Word), pruebe un servidor fuera de proceso diferente para asegurarse de que el problema no se produce en la capa COM. 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. Estos archivos se instalan normalmente como un conjunto. Estos archivos deben coincidir con los números de compilación. Una utilidad de configuración configurada incorrectamente puede instalar erróneamente los archivos por separado. Esto hace que los archivos no coincidan. Para evitar problemas en la automatización, examine los archivos para asegurarse de que las compilaciones de archivos coincidan.

    Los archivos de automatización se encuentran en el directorio Windows\System32. Examine los archivos siguientes.

    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 Explorador de Windows y, a continuación, haga clic en Propiedades. Anote los cuatro últimos dígitos de la versión del archivo (el número de compilación) y la fecha en que se modificó por última vez el archivo. Asegúrese de que estos valores sean los mismos para todos los archivos de automatización.

    Nota Los archivos siguientes son para Windows 10, versión 1709, compilación 16299.431. Estos números y fechas son solo ejemplos. Sus valores pueden ser diferentes.

  • Utilice la Utilidad de configuración del sistema (Msconfig.exe) para examinar los servicios y el inicio del sistema de aplicaciones de terceros que podrían restringir la ejecución del código en la aplicación de Office

    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 del antivirus externo para obtener más información acerca de una actualización del programa antivirus.

    1. En el menú Archivo , haga clic en Opciones y, a continuación, en Complementos.

    2. Haga clic en Administrar complementos COM y luego en Ir.

      Nota Se abre el cuadro de diálogo de complementos COM .

    3. Desactive la casilla de cualquier complemento de terceros y, a continuación, haga clic en Aceptar.

    4. Reinicie Outlook.

Volver a instalar Office

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

Para obtener más información, consulte el siguiente artículo de Office:

Descargar e instalar o volver a instalar Office 365 u Office 2016 en su equipo PC o Mac

Referencias

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

Introducción al desarrollo de Office