Recibe el error 429 en tiempo de ejecución cuando automatiza aplicaciones de Office

Seleccione idioma Seleccione idioma
Id. de artículo: 828550 - Ver los productos a los que se aplica este artículo
Para obtener una versión de este artículo para Microsoft Office XP, Office 2000 y Office 97, vea 244264.
Expandir todo | Contraer todo

En esta página

Resumen

Al utilizar el operador New o la función CreateObject en Microsoft Visual Basic para crear una instancia de una aplicación de Microsoft Office, puede aparecer el mensaje de error siguiente:
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 Automation solicitado, y el objeto Automation no está por consiguiente disponible en 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 aparece cuando 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 error 429 en un equipo cliente, utilice la información siguiente para aislarlo y resolverlo en las aplicaciones de Microsoft Office.

Nota: 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 línea de código que pueda estar produciendo el problema.

Si descubre que una única línea de código puede ser la causante del problema, complete estos procedimientos:
  • Asegúrese de que el código utiliza la creación explícita de objetos.

    Los problemas son más fáciles de identificar si se reducen a una acción única. Por ejemplo, busque la utilización de la creación de objetos implícita como uno de los ejemplos 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ícita. Microsoft Office Word 2003 no se inicia hasta que la variable se llame al menos una vez. Puesto que se puede llamar a la variable en partes diferentes del programa, el problema puede ser difícil de encontrar. Puede resultar 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, de la manera siguiente:
    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... some other code
    Set oDoc = oWordApp.Documents.Add
    Cuando realiza llamadas explícitas para crear cada objeto por separado, es más fácil aislar el problema. Esto también puede hacer que el código sea más fácil de leer.
  • Utilice la función CreateObject en lugar del operador New cuando cree una instancia de una aplicación de Office.

    La función CreateObject sigue minuciosamente el proceso de creación que la mayor parte de los clientes de Microsoft Visual C++ usan. 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 tiempo de compilación y con objetos enlazados en tiempo de ejecución.
  • Compruebe que la cadena "ProgID" que se pasa a 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 "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 que especificó en la cadena "ProgID".
  • Utilice el comando Erl para informar del número de línea correspondiente a la línea de código que no es correcta. Esto puede ayudarle a depurar las aplicaciones que no pueden ejecutarse en el IDE. El código siguiente indica qué 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
    Use la función MsgBox y el número de línea para hacer un seguimiento del error.
  • Utilice el enlace en tiempo de ejecución de la forma siguiente:
    Dim oWordApp As Object
    Los objetos enlazados en tiempo de compilación requieren que el cálculo de referencia de sus interfaces personalizadas se realice a través de los límites del proceso. Si no se pueden calcular las referencias de la interfaz personalizada durante la ejecución de CreateObject o de New, recibe el error 429. Un objeto enlazado en tiempo de ejecución utiliza la interfaz definida por el sistema IDispatch que no requiere que se calcule la referencia de un servidor proxy personalizado. Utilice un objeto con enlace en tiempo de ejecución para comprobar si este procedimiento funciona correctamente.

    Si el problema sólo se produce cuando el objeto se enlaza en tiempo de compilación, el problema radica en la aplicación de servidor. Normalmente, para corregir el problema puede reinstalar la aplicación según se describe en la sección "Examinar el servidor de automatización" de este artículo.

Examinar el servidor de automatización

La razón más frecuente para que se produzca un error con CreateObject o con New es un problema de la aplicación de servidor. Normalmente, la configuración o la instalación de la aplicación provocan el problema. Para solucionar el problema, utilice los procedimientos 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 y en Ejecutar e intente ejecutar la aplicación. Si no puede ejecutar manualmente la aplicación, no funcionará mediante automatización.
  • Vuelva a registrar la aplicación como se indica a continuación:
    1. Haga clic en Inicio y, a continuación, haga clic en Ejecutar.
    2. En el cuadro de diálogo Ejecutar, escriba la ruta de acceso del servidor y anexe /RegServer al final de la línea.
    3. Haga clic en Aceptar.

      La aplicación se ejecutará sin emitir mensajes. La aplicación se volverá 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 de la aplicación. Asegúrese de que la ruta de acceso está en formato corto (DOS 8.3). No tiene que incluir en el Registro 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 que está almacenada para el servidor, inicie el Editor del Registro de Windows de la manera siguiente:
    1. Haga clic en Inicio y, a continuación, haga clic en Ejecutar.
    2. Escriba regedit y haga clic en Aceptar.
    3. Vaya 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 valores siguientes 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.
      Contraer esta tablaAmpliar esta tabla
      Servidor de OfficeClave 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. Asegúrese de que la ruta de acceso coincide con la ubicación real del archivo.
    Nota: los nombres cortos de ruta de acceso pueden parecer correctos cuando no lo son. Por ejemplo, Office y Microsoft Internet Explorer (si están instalados en su ubicación predeterminada) tienen una ruta de acceso corta similar a C:\ARCHIV~1\MICROS~X\ (donde X es un número). Este nombre puede no parecer inicialmente un nombre de ruta corto.

    Para determinar si la ruta de acceso es correcta, siga estos pasos:
    1. Haga clic en Inicio y, a continuación, haga clic en Ejecutar.
    2. Copie el valor del Registro y 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 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. Utilice un nombre de ruta corto, si es posible.
  • Compruebe si la plantilla Normal.dot o el archivo de recursos Excel.xlb están dañados. Pueden producirse problemas cuando automatiza 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 todas las apariciones de Normal.dot o de Excel.xlb en los discos duros locales.

    Nota: en los sistemas que ejecutan Microsoft Windows 2000 o Microsoft Windows XP puede encontrar varias copias de estos archivos. Hay una copia de cada uno de estos archivos por cada perfil de usuario que esté instalado 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 cambió. Estos archivos están dañados. Si el código no funciona, debe volver a cambiar el nombre de estos archivos al original para guardar la configuración personalizada que puedan contener estos archivos.
  • Si el sistema ejecuta Windows 2000, ejecute la aplicación bajo la cuenta Administrador. Los servidores de Office requieren acceso de lectura y 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

La configuración del sistema también puede ocasionar problemas con la creación de servidores COM fuera de proceso. Para solucionar problemas, utilice los procedimientos siguientes en el sistema donde se produzca el error:
  • Determine 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 reside en la propia capa de COM. Si no puede crear un servidor COM fuera de proceso en el equipo, reinstale los archivos del sistema de OLE según 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 del sistema de OLE que administran la automatización. Estos archivos suelen instalarse como un conjunto. Deben coincidir con los números de compilación. Si la utilidad de instalación está configurada incorrectamente, puede instalar equivocadamente los archivos de forma independiente. Esto hace que los archivos no coincidan. Para evitar problemas con 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 los directorios Windows\System32 o Winnt\System32. Examine los archivos siguientes.
    Contraer esta tablaAmpliar esta tabla
    Nombre de archivoVersiónFecha de modificación
    Asycfilt.dll3.50.50144 de septiembre de 2002
    Oleaut32.dll3.50.50164 de septiembre de 2002
    Olepro32.dll5.0.50144 de septiembre de 2002
    Stdole2.tlb3.0.50144 de septiembre de 2002
    Para examinar la versión del archivo, haga clic con el botón secundario del mouse (ratón) en el archivo en el Explorador de Windows y, a continuación, haga clic en Propiedades. Observe 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.

    Nota: los números de versión y las fechas anteriores se recuperan de un equipo que utiliza Windows Server 2003 con Office 2003 instalado. Estos números y fechas simplemente se utilizan como ejemplos. Es probable que sus valores sean diferentes.

    Si en los archivos no coinciden los números de compilación o las fechas de modificación, descargue una utilidad autoextraíble que actualice los archivos de automatización.

    Para obtener más información acerca de cómo tener acceso a los archivos de tiempo de ejecución, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    235420 Vbrun60sp4.exe instala archivos de tiempo de ejecución del SP4 de Visual Basic 6.0
  • Emplee la Utilidad de configuración del sistema (Msconfig.exe) para examinar los servicios y el tipo de inicio de las aplicaciones de otros proveedores 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, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    310560 Cómo solucionar problemas con la Utilidad de configuración del sistema en Windows XP
    Por ejemplo, se puede producir un error en las aplicaciones de Automatización de Outlook porque esté ejecutando un programa antivirus que tenga características de "bloqueador de secuencia de comandos".

    Nota: deshabilite únicamente el programa antivirus de forma temporal en un sistema de prueba que no esté conectado a la red.

    O bien, puede seguir estos pasos en Outlook para deshabilitar los complementos de otros proveedores:
    1. En el menú Herramientas, haga clic en Opciones.
    2. En la ficha Otros, haga clic en Opciones avanzadas.
    3. En el cuadro de diálogo Opciones avanzadas, haga clic en Administrador de complementos.
    4. Haga clic en la casilla de verificación de cualquier complemento de otro proveedor para desactivarla.
    5. Reinicie Outlook.
    Si este método resuelve el problema, póngase en contacto con el proveedor del antivirus para obtener más información acerca de una actualización del programa.

Reinstalar Office

Si no se resuelve el problema con ninguno de los procedimientos anteriores, quite Office y vuelva a instalarlo. Microsoft recomienda desinstalar primero la versión existente y reinstalar Office después con los discos de instalación originales.

Para obtener más información al respecto, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
219423 Cómo quitar por completo el CD1 de Microsoft Office
158658 Cómo quitar por completo Microsoft Office 97

Referencias

Para obtener más información acerca de cómo solucionar el mensaje de error '429', haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
240377 Cómo comprobar que Jet 3.5 está instalado correctamente (parte I)
Para obtener más información acerca de la automatización de Office y ejemplos de código, visite el siguiente sitio Web de Microsoft:
http://support.microsoft.com/ofd

Propiedades

Id. de artículo: 828550 - Última revisión: viernes, 12 de julio de 2013 - Versión: 5.4
La información de este artículo se refiere a:
  • Microsoft Office Excel 2007
  • Microsoft Office SharePoint Designer 2007
  • Microsoft Office Outlook 2007
  • Microsoft Office Outlook 2003
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft Office Word 2007
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Professional Edition
Palabras clave: 
kbexpertisebeginner kbtshoot kbprogramming kberrmsg kbautomation kbinfo KB828550

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com