INFO: Solucionar el error 429 al automatizar las aplicaciones de Office

Seleccione idioma Seleccione idioma
Id. de artículo: 244264 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

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 aparecer un mensaje de error similar al siguiente:
Se ha producido el error 429 en tiempo de ejecución: El componente ActiveX no puede crear el objeto
Este error se produce cuando el objeto Automation solicitado no se pudo crear mediante COM y, por tanto, no está disponible para Visual Basic. No aparece normalmente en todos los equipos.

Este artículo proporciona algunas sugerencias para solucionar problemas que ayudan a diagnosticar y resolver problemas comunes que se sabe que producen este error.

Más información

A diferencia de algunos errores producidos en Visual Basic, no existe una causa única que produzca el error 429. El problema se debe a un error en la configuración de la aplicación o del sistema, o a un componente que falta o está dañado. La determinación de la causa exacta es una cuestión de eliminación de posibilidades. Si el error se produce en un equipo cliente, se ha de comprobar una serie de puntos para aislar y resolver el error.

Más adelante se proporcionan algunas sugerencias prácticas para solucionar este error cuando se trabaja con aplicaciones de Office. Parte de esta información también se puede aplicar a servidores COM no basados en Office, pero este artículo supone que el usuario está intentando automatizar Microsoft Office.

Comprobación del código

El código es el primer lugar para empezar a buscar el problema. Antes de solucionar un error, es necesario saber dónde se produce. Intente encontrarlo específicamente en una línea individual de código.

Cuando encuentre el código defectuoso, intente realizar las siguientes acciones:
  • Asegúrese de que el código utiliza la creación explícita de objetos. Se puede encontrar e identificar un problema más fácilmente si está limitado a una sola acción. Por ejemplo, no ejecute lo siguiente:
    Application.Documents.Add 'NO UTILICE ESTO!!
    						
    o:
    
    Dim oWordApp As New Word.Application 'NO UTILICE ESTO!!
    '... algún otro código
    oWordApp.Documents.Add
    						
    Ambos métodos utilizan la creación de objetos implícita. Microsoft Word no se inicia hasta que se llama a la variable al menos una vez. La posibilidad de que se llame a la variable en diferentes partes del programa dificulta la tarea de localizar el problema. Tampoco está claro si el problema está relacionado con la creación del objeto Application o del objeto Document.

    En su lugar, se deben realizar llamadas explícitas para crear cada objeto por separado:
    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... algún otro código
    Set oDoc = oWordApp.Documents.Add
    						
    De este modo se facilita tanto el aislamiento del problema como la lectura del código.
  • Cuando se crea una instancia de una aplicación de Microsoft Office, conviene utilizar CreateObject en lugar de New. CreateObject está estrechamente relacionado con el proceso de creación utilizado por la mayoría de los clientes de Visual C++, y permite realizar cambios en el CLSID del servidor entre versiones. CreateObject se puede utilizar con objetos enlazados tanto en tiempo de compilación como en tiempo de ejecución.
  • Compruebe que la cadena ProgID pasada a CreateObject es correcta e independiente de la versión (es decir, utilice "Excel.Application" en lugar de "Excel.Application.8"). Es posible que el sistema que no funciona tenga una versión más antigua o más reciente de Microsoft Office que la versión especificada en ProgID.
  • Para facilitar la depuración de aplicaciones que no se pueden ejecutar en el IDE, utilice el comando Erl para notificar el número de la línea que produce errores. Por ejemplo, el siguiente código indicará que el objeto Automation no se puede crear (Word o Excel):
    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")
    
    ' ... algún otro código
    
    err_handler:
      MsgBox "Error del código en la línea " & Erl, vbCritical
    						
    Utilice una combinación de cuadros de mensaje y números de línea para realizar un seguimiento del error.
  • Intente utilizar el enlace en tiempo de ejecución (es decir, objeto Dim oWordApp As). 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 hay un problema de cálculo de referencia de una interfaz personalizada durante la ejecución de CreateObject o New, aparecerá un error 429. Un objeto enlazado en tiempo de ejecución utiliza una interfaz definida por el sistema (IDispatch) que no requiere un proxy personalizado para el cálculo de referencia. Intente utilizar un objeto enlazado en tiempo de ejecución para ver si se produce alguna diferencia.

    Si el problema sólo surge cuando se trata de un objeto enlazado en tiempo de compilación, el origen del mismo está en la aplicación de servidor y normalmente se soluciona reinstalando la aplicación (véase más adelante).
  • Si está automatizando a partir de un componente MTS o ASP, utilice CreateObject en lugar de Server.CreateObject(). Si utiliza Server.CreateObject se creará una instancia de la aplicación de Office bajo la identidad de un paquete MTS que se sabe que causa problemas con Microsoft Office.

Comprobación del servidor de automatización

Las causas más comunes de los errores con CreateObject o New son los problemas con la propia aplicación de servidor. Normalmente, estos problemas están relacionados con la configuración o la instalación de la aplicación. A continuación se describen algunos puntos que conviene comprobar:
  • Compruebe si la aplicación de Microsoft Office que desea automatizar está instalada en el equipo local y asegúrese de que puede iniciar la aplicación desde el comando Ejecutar de Inicio. Si el programa no se puede iniciar manualmente, no funcionará en el proceso de automatización.
  • Vuelva a registrar la aplicación escribiendo la ruta de acceso al servidor en el cuadro de diálogo Ejecutar de Inicio, y agregue después /RegServer al final de la línea. Haga clic en Aceptar. La aplicación debe ejecutarse en modo no interactivo y registrarse de nuevo como servidor COM. Si el problema se debe a una clave del Registro que no existe, normalmente se corregirá.
  • Compruebe la clave LocalServer32 bajo el CLSID para la aplicación que desea automatizar. Asegúrese de que apunta a la ubicación correcta en la aplicación y de que el nombre de la ruta de acceso está escrito en formato corto (DOS 8.3). Aunque no es un requisito necesario que un servidor se registre utilizando un nombre corto para la ruta de acceso, se tiene conocimiento de que los nombres largos de ruta de acceso con espacios incluidos ocasionan problemas en algunos sistemas (véase más adelante).

    Para comprobar la ruta de acceso de clave almacenada para el servidor, inicie el Editor del Registro de Windows escribiendo regedit en el cuadro de diálogo Ejecutar de Inicio. Vaya a la clave HKEY_CLASSES_ROOT\Clsid. Bajo esta clave encontrará los CLSID correspondientes a los servidores de automatización registrados en el sistema. Utilice los valores para encontrar la clave que representa la aplicación de Office que desea automatizar y comprobar la clave LocalServer32 para la ruta de acceso.

    Contraer esta tablaAmpliar esta tabla
    Servidor de OfficeClave de 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}

    ¿Coincide la ruta de acceso con la ubicación real del archivo? Tenga en cuenta que los nombres cortos de ruta de acceso pueden dar la impresión de que una ruta de acceso es correcta cuando es posible que no lo sea. Por ejemplo, tanto Microsoft Office como Microsoft Internet Explorer (si se han instalado en sus ubicaciones predeterminadas) tendrán un nombre corto de ruta de acceso similar a "C:\PROGRA~1\MICROS~X\" donde X es un número. No se puede deducir de forma inmediata que se trate de un nombre corto de ruta de acceso.

    Puede comprobar si la ruta de acceso es realmente correcta copiando el valor del Registro y pegándolo en el cuadro de diálogo Ejecutar de Inicio (quite el modificador /Automation antes de ejecutar la aplicación). ¿Se inicia la aplicación cuando se selecciona Aceptar? En caso afirmativo, el servidor está registrado correctamente. En caso negativo, se debe reemplazar el valor de la clave LocalServer32 por la ruta de acceso correcta (utilizando un nombre corto si es posible).
  • Se tiene conocimiento de que se han producido problemas al automatizar Word o Excel si la plantilla Normal.dot (Word) o el archivo de recursos Excel.xlb (Excel) están dañados. Para comprobar si se han producido daños, busque en las unidades de disco duro locales para encontrar todas las instancias de Normal.dot o *.xlb. Tenga en cuenta que si está ejecutando Windows 2000, Windows NT o Windows 95/98 con perfiles habilitados, puede encontrar varias copias de estos archivos, una por cada perfil de usuario en el sistema. Cambie temporalmente el nombre de los archivos Normal.dot o *.xlb, y vuelva a ejecutar la prueba de automatización (Word y Excel crearán estos archivos si no pueden encontrarlos). ¿Funciona el código ahora? En caso afirmativo, los archivos cuyo nombre se ha cambiado deben eliminarse porque están dañados. En caso negativo, se deben restablecer sus nombres originales para no perder la configuración personalizada guardada en estos archivos.
  • Si está en un sistema Windows NT, Windows 2000, Windows XP o Windows Server 2004, ejecute la aplicación utilizando la cuenta de administrador. Los servidores de Office requieren acceso de lectura/escritura al Registro y a la unidad de disco, y puede que no se carguen correctamente si la configuración de seguridad actual deniega este privilegio.

Comprobación del Sistema

La configuración del sistema también puede ocasionar problemas con la creación de servidores COM fuera de proceso. A continuación se describen algunos puntos que conviene comprobar en los sistemas donde se produce el error:
  • ¿Se produce el problema con cualquier servidor fuera de proceso? Si tiene una aplicación que sólo utiliza un servidor COM concreto (por ejemplo, Word), deberá probar otro servidor fuera de proceso para asegurarse de que el problema no reside en la propia capa de COM. Si no se puede crear un servidor COM fuera de proceso en ese sistema, será necesario reinstalar los archivos de sistema OLE (véase más adelante) o volver a instalar el sistema operativo para resolver el problema.
  • Compruebe 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 y deben estar de acuerdo con los números de versión de compilación. Una utilidad de instalación configurada incorrectamente puede instalar erróneamente los archivos por separado, de modo que no sean coincidentes. Para evitar problemas con la automatización, debe comprobar los archivos para saber si coinciden con los números de versión de compilación.

    Los archivos de automatización se encuentran en el directorio Windows\System o Winnt\System32. En la siguiente lista se enumeran los archivos que se han de comprobar:

    Contraer esta tablaAmpliar esta tabla
    Nombre de archivoVersiónFecha de modificación
    Asycfilt.dll2.40.427508 de marzo de 1999
    Oleaut32.dll2.40.427508 de marzo de 1999
    Olepro32.dll5.0.427508 de marzo de 1999
    Stdole2.tlb 2.40.427508 de marzo de 1999

    La versión de archivo se comprueba haciendo clic con el botón secundario del mouse (ratón) en el archivo en el Explorador y seleccionando Propiedades en el menú emergente. Los valores más importantes son los cuatro últimos dígitos de la versión de archivo (el número de versión de compilación) y la fecha de la última modificación. Debe asegurarse de que estos valores son los mismos para todos los archivos de automatización.

    Conviene señalar que los números de versión y las fechas que figuran más arriba sólo se proporcionan a modo de ejemplo. Es probable que sus valores sean diferentes. Lo realmente importante es que estos valores coincidan entre sí y no con los de esta tabla.

    Si los archivos no se corresponden con los números de versión de compilación o con las fechas de la última modificación, puede descargar una utilidad de extracción automática que actualizará los archivos de automatización. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    290887 VBRun60sp6.exe instala archivos en tiempo de ejecución del SP6 de Visual Basic 6.0
  • Windows NT 4.0 tiene un problema conocido con el inicio de servidores de automatización que residen en una carpeta que contiene un espacio incluido en el nombre, y es similar a otra carpeta cuyos ocho primeros caracteres son idénticos. Por ejemplo, un servidor que reside en C:\Program Files\SomeFolder puede no iniciarse durante una llamada a CreateObject si hay otra carpeta en el sistema denominada C:\Program Stuff\SomeFolder. Para obtener más información, consulte el siguiente artículo de Microsoft Knowledge Base.Para obtener información adicional acerca de este problema y de los pasos para solucionarlo, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    185126 BUG: COM/OLE Server Fails to Start on Windows NT 4.0

Reinstalación de Microsoft Office

Si ninguno de los pasos anteriores ayuda a la resolución del problema, considere la posibilidad de desinstalar y reinstalar Microsoft Office. Microsoft recomienda desinstalar primero la versión existente y reinstalar después la versión de los discos de la instalación original.

Si desea una lista completa de los elementos que se han de quitar, consulte los siguientes artículos de Knowledge Base:
219423 OFF2000: Cómo quitar por completo Microsoft Office 2000
158658 OFF97: Cómo quitar por completo Microsoft Office 97

Referencias

Para obtener información adicional 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 si Jet 3.5 está instalado correctamente (Parte I)
Para obtener la información más reciente y el código de ejemplo sobre la automatización de Microsoft Office, visite el sitio Web de soporte técnico en línea de Microsoft:
http://support.microsoft.com/ofd

Propiedades

Id. de artículo: 244264 - Última revisión: lunes, 19 de diciembre de 2005 - Versión: 5.1
La información de este artículo se refiere a:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Edición empresarial
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Access 97 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft FrontPage 2002 Standard Edition
  • Microsoft FrontPage 2000 Standard Edition
  • Microsoft Outlook 2002 Standard
  • Microsoft Outlook 2000 Standard
  • Microsoft Outlook 97 Standard
  • Microsoft Outlook 98 Standard
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
Palabras clave: 
kbautomation kbfaq kbinfo KB244264

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