Resumen
Al usar 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 reciba el siguiente mensaje de error:
Error en tiempo de ejecución '429': el componente ActiveX no puede crear objeto
Este error se produce cuando el modelo de objetos componentes (COM) no puede crear el objeto automation solicitado y, por tanto, el objeto automation 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 Es posible que parte de la siguiente información también se aplique 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 sola línea de código que pueda estar causando el problema.
Si descubres que una sola línea de código puede estar causando el problema, completa estos procedimientos:
-
Asegúrese de que el código usa la creación explícita del objeto.
Los problemas son más fáciles de identificar si se reducen a una sola acción. Por ejemplo, busque la creación implícita de objetos que se usa como una de las siguientes opciones.
Ejemplo de código 1Application.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 implícita de objetos. Microsoft Office Word 2003 no se inicia hasta que se llama a la variable al menos una vez. Debido a que la variable puede llamarse en diferentes 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 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
Al realizar 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 New 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 Microsoft Visual C++ clientes. La función CreateObject también permite cambios en el CLSID del servidor entre versiones. Puede usar la función CreateObject con objetos enlazados de forma anticipada y con objetos enlazados en tiempo de entrega. -
Compruebe que la cadena "ProgID" que se pasa aCreateObject es correcta y, a
continuación, compruebe que la cadena "ProgID" sea 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 informar del número de línea de la línea de código que no tiene éxito. Esto puede ayudarle a depurar aplicaciones que no se pueden ejecutar 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 CuadroMsj y el número de línea para realizar un seguimiento del error.
-
Use la encuadernación retrasada como se indica a continuación:
Dim oWordApp As Object
Los objetos enlazados de forma anticipada requieren que sus interfaces personalizadas se ordene a través de los límites del proceso. Si la interfaz personalizada no se puede asociar durante CreateObject o durante New, recibe el mensaje de error "429". Un objeto enlazado en tiempo de entrega usa la interfaz definida por el sistema IDispatch que no requiere que un proxy personalizado se pueda asociar. Use un objeto enlazado en tiempo de demora para comprobar que este procedimiento funciona correctamente.
Si el problema se produce solo cuando el objeto está enlazado en una primera fase, el problema se encuentra en la aplicación de servidor. Normalmente, puede volver a instalar la aplicación tal y 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 New es un problema que afecta a la aplicación de servidor. Por lo general, la configuración de la aplicación o la configuración de la aplicación provoca el problema. Para solucionar problemas, use los métodos siguientes:
-
Compruebe que la aplicación de Office que quiere 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
Ejecutar e intente ejecutar la aplicación. Si no puede ejecutar la aplicación manualmente, la aplicación no funcionará mediante la automatización. -
Vuelva a registrar la aplicación de la siguiente manera:
-
Haga clic en Inicio y, a continuación, haga clic en Ejecutar.
-
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.
-
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 normalmente corrigen el problema.
-
-
Examine la clave LocalServer32 en CLSID para la aplicación que desea automatizar. Asegúrese de que la clave LocalServer32 apunta a la ubicación correcta para la aplicación. Asegúrese de que el nombre de la ruta de acceso tiene un formato de ruta corta (DOS 8.3). No es necesario que registre un servidor con un nombre de ruta corto. Sin embargo, los nombres de rutas largas 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:-
Haga clic en Inicio y, a continuación, haga clic en Ejecutar.
-
Escriba regedit y haga clic en Aceptar.
-
Ir a la tecla HKEY_CLASSES_ROOT\CLSID.
Los CLSID para los servidores de automatización registrados en el sistema se encuentran bajo esta clave. -
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-00000000046}
Outlook.Application
{0006F03A-0000-0000-C000-000000000046}
PowerPoint.Application
{91493441-5A91-11CF-8700-00AA0060263B}
Word.Application
{000209FF-0000-0000-C000-000000000046}
-
Compruebe la ruta de acceso para asegurarse de que coincide con la ubicación real del archivo.
Nota Los nombres de ruta cortos 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). Inicialmente, es posible que este nombre no parezca ser un nombre corto de ruta de acceso.
Para determinar si la ruta de acceso es correcta, siga estos pasos:-
Haga clic en Inicio y, a continuación, haga clic en Ejecutar.
-
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. -
Haga clic en Aceptar.
-
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 por la ruta de acceso correcta. Si es posible, use un nombre de ruta breve.
-
-
Compruebe si hay daños en la plantilla Normal.dot o en el archivo de recursos Excel.xlb. Es posible que se produzcan 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 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 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 los encuentran. Comprueba que el código funciona. Si el código funciona cuando se crea un nuevo archivo Normal.dot, elimine los archivos a los que ha cambiado el nombre. 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. -
Ejecuta la aplicación en la Cuenta de administrador. Los servidores de Office requieren acceso de lectura y escritura en el registro y en 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 el problema, utilice 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 determinado (por ejemplo, Word), pruebe otro servidor fuera de proceso para asegurarse de que el problema no está ocurriendo en la propia capa COM. Si no puede crear un servidor COM fuera de proceso en el equipo, vuelva a instalar los archivos del 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 normalmente se instalan como un conjunto. Estos archivos deben coincidir con los números de compilación. Una utilidad de configuración configurada incorrectamente puede instalar por error 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. 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ó 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. Los valores pueden ser diferentes. -
Use la utilidad Configuración del sistema (Msconfig.exe) para examinar los servicios y el inicio del sistema para las aplicaciones de terceros que podrían restringir el código de ejecución en la aplicación
de OfficeNota Deshabilitar 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 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 una actualización del programa antivirus.-
En el menú Archivo, haga clic en Opciones y, a continuación, haga clic en Complementos.
-
Haga clic en Administrar complementos COM y, a continuación, haga clic en Ir.
Nota Se abrirá el cuadro de diálogo Complementos COM. -
Desactive la casilla de cualquier complemento de terceros y, a continuación, haga clic en Aceptar.
-
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ículo de Office:
Descargar e instalar o reinstalar Office 365 u Office 2016 en un equipo PC o Mac
Referencias
Para obtener más información sobre los ejemplos de automatización y código de Office, vaya al siguiente sitio web de Microsoft: