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

Se aplica a: Office 2016Office 2013

Resumen


Cuando utiliza el operador New o la función CreateObject en Microsoft Visual Basic para crear una instancia de una aplicación de Microsoft Office, puede recibir el siguiente mensaje de error:
Error de tiempo de ejecución '429': el componente de ActiveX no puede crear el objeto
Este error se produce cuando el modelo de objetos componentes (COM) no se puede crear el objeto Automation solicitado, y el objeto de automatización , por lo tanto, no a Visual Basic. Este error no se produce en todos los equipos.Este artículo describe cómo diagnosticar y resolver problemas comunes que pueden producir 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.
  • Hay un componente que falta.
  • 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, utilice la siguiente información para aislar y resolver el error en las aplicaciones de Microsoft Office.Note Parte de la información siguiente también se puede aplicar a servidores COM que no son de Office. Sin embargo, en este artículo se supone que desea automatizar aplicaciones de Office.

Examinar el código

Antes de solucionar el error, intente aislar una sola línea de código que puedan estar causando el problema.Si descubre que una sola línea de código puede estar causando el problema, siga estos procedimientos: 
  • Asegúrese de que el código utiliza la creación explícita de objetos. Problemas son más fáciles de identificar si se reducen a una sola acción hacia abajo. Por ejemplo, busque la creación de objetos implícita que se utiliza 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 codeoWordApp.Documents.Add
    Ambos ejemplos de código utilizan la creación implícita de objetos. Microsoft Office Word 2003 no se inicia hasta que la variable se llame al menos una vez. Dado que la variable se puede llamar en distintas partes del programa, el problema puede ser difícil de localizar. Puede ser difícil comprobar que el problema se produce cuando se crea el objeto Application o cuando se crea el objeto de documento . En su lugar, puede realizar llamadas explícitas para crear cada objeto por separado, como sigue.
    Dim oWordApp As Word.ApplicationDim oDoc As Word.DocumentSet oWordApp = CreateObject("Word.Application")'... some other codeSet oDoc = oWordApp.Documents.Add
    Cuando realiza llamadas explícitas para crear cada objeto por separado, es más fácil aislar el problema. Esto puede también que el código más fácil de leer.
  • Utilice la función CreateObject en lugar del operador New cuando se crea una instancia de una aplicación de Office. La función CreateObject mapas de cerca el proceso de creación que utilizan la mayoría de los clientes de Microsoft Visual C++. El CreateObjectfunción también permite cambios en el CLSID del servidor entre versiones. Puede utilizar el CreateObjectfunción con objetos de tiempo de compilación y con objetos enlazados.
  • Compruebe que la cadena "ProgID" que se pasa al CreateObject es correcta y, a continuación, compruebe que la cadena "ProgID" es independiente de la versión. Por ejemplo, utilice la cadena "Excel.Application" en lugar de utilizar 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 especificada en la cadena "ProgID".
  • Utilice el comando Erl para notificar el número de la línea de código que no es correcta. Esto puede ayudarle a depurar las aplicaciones que no se pueden ejecutar en el IDE. El código siguiente indica que el objeto Automation 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
    Utilice la función MsgBox y el número de línea para hacer un seguimiento del error.
  • Utilice el enlace siguiente:
    Dim oWordApp As Object
    Objetos de tiempo de compilación requieren sus interfaces personalizadas se realice a través de los límites del proceso. Si no puede calcularse la interfaz personalizada durante CreateObject o New, recibirá el mensaje de error "429". Un objeto en tiempo de ejecución utiliza la interfaz definida por el sistema IDispatch que no requiere un proxy personalizado que se va a calcular. Utilice un objeto en tiempo de ejecución para comprobar que este procedimiento funciona correctamente. Si el problema sólo se produce cuando el objeto es el origen del enlace, el problema está en la aplicación de 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 solucionar el problema.

Examinar el servidor de automatización

La razón más común para que se producen al utilizar CreateObject o New un error 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 que causa el problema. Para solucionar problemas, utilizar los siguientes métodos:

  • Comprobar 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 Ejecutary, a continuación, intente ejecutar la aplicación. Si no puede ejecutar manualmente la aplicación, la aplicación no funcionará mediante automatización.
  • Vuelva a registrar la aplicación como sigue:  
    1. Haga clic en Inicioy, a continuación, haga clic en Ejecutar.
    2. En el cuadro de diálogo Ejecutar , escriba la ruta de acceso del servidor y agregue después /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 para 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 ruta de acceso está en formato corto (DOS 8.3). No es necesario registrar un servidor utilizando un nombre de ruta corto. Sin embargo, los nombres de ruta largos que incluyen espacios incrustados pueden provocar problemas en algunos sistemas. Para examinar la clave de ruta de acceso almacenada para el servidor, inicie el Editor del registro de Windows, como sigue:  
    1. Haga clic en Inicioy, a continuación, haga clic en Ejecutar.
    2. Escriba regedity, a continuación, haga clic en Aceptar.
    3. Mover a la clave HKEY_CLASSES_ROOT\CLSID. Los CLSID para los servidores de automatización registrados en el sistema están bajo esta clave.
    4. Utilice los siguientes valores de la clave CLSID para encontrar 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.
    Note Nombres de ruta de acceso corta pueden parecer correctos cuando no son correctos. Por ejemplo, Office y Microsoft Internet Explorer (si están instalados en sus ubicaciones predeterminadas) tienen una ruta de acceso corta similar a C:\PROGRA~1\MICROS~X\ (donde X es un número). Este nombre puede no parecer inicialmente un nombre corto de ruta. Para determinar si la ruta de acceso es correcta, siga estos pasos:  
    1. Haga clic en Inicioy, a continuación, haga clic en Ejecutar.
    2. Copie el valor del registro y, a continuación, pegar el valor en el cuadro de diálogo Ejecutar . Note 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 está registrado correctamente. Si la aplicación no se ejecuta después de hacer clic en Aceptar, reemplace el valor de la clave LocalServer32 con la ruta de acceso correcta. Si es posible, utilice un nombre de ruta corto.
  • Comprobar posibles daños de la plantilla Normal.dot o del archivo de recursos Excel.xlb. Pueden producirse problemas cuando automatiza Microsoft Word o Microsoft Excel si ya sea la plantilla Normal.dot en Word o el archivo de recursos Excel.xlb en Excel está dañado. Para probar estos archivos, busque los discos duros locales para todas las instancias de Normal.dot o de Excel.xlb. Note Puede encontrar varias copias de estos archivos. Hay una copia de cada uno de estos archivos para cada perfil de usuario que está instalada en el sistema. Cambie temporalmente el nombre de los archivos Normal.dot o Excel.xlb y vuelva a ejecutar la prueba de automatización. Word y 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 que se guarda en estos archivos.
  • Ejecute la aplicación bajo la cuenta de administrador. Los servidores de Office requieren acceso de lectura/escritura al registro y a la unidad de disco. Los servidores de Office pueden no cargarse correctamente si la configuración de seguridad actual deniega el acceso de lectura y escritura.

Examinar el sistema

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

  • Determinar si el problema se produce con cualquier servidor fuera de proceso. Si tiene una aplicación que utiliza un servidor COM concreto (por ejemplo, Word), pruebe otro servidor fuera de proceso para asegurarse de que el problema no está produciendo en la propia capa de com.. Si no se puede crear un servidor COM fuera de proceso en el equipo, vuelva a instalar los archivos de sistema OLE, como se describe en la sección "Reinstalar Microsoft Office" de este artículo o reinstale 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 instalació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 el número de compilación coincide. 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 en el archivo en el Explorador de Windows y, a continuación, haga clic en Propiedades. Tenga en cuenta los cuatro últimos dígitos de la versión del archivo (el número de compilación) y la fecha en que se modificó el archivo por última vez. Asegúrese de que estos valores son los mismos para todos los archivos de automatización. Note Los siguientes archivos son para Windows 10 versión 1709, compilación 16299.431. Estos números y fechas son sólo ejemplos. Los valores pueden ser diferentes.  
  • Utilice la utilidad de configuración del sistema (Msconfig.exe) para examinar el inicio del sistema y los servicios de aplicaciones de terceros que puedan 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 de solución de problemas avanzada de utilidad de configuración del sistema
    Por ejemplo, aplicaciones de automatización de Outlook pueden fallar porque se está ejecutando un programa antivirus que tenga características de "bloqueador de secuencia de comandos". Note Deshabilite el programa antivirus sólo 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 acerca de una actualización para el programa antivirus.  
    1. En el menú archivo , haga clic en Opcionesy, a continuación, haga clic en complementos.
    2. Haga clic en administrar los complementos COMy, a continuación, haga clic en Ir. Note Abre 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, consulte el siguiente artículode Office:

Referencias


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