Compartir a través de


La clase no admite la automatización (error 430)

La interfaz Automation no aparece en todos los objetos. Este error tiene la siguiente causa y solución:

  • Se ha encontrado la clase que especificó en la llamada de función GetObject o CreateObject, pero no ha expuesto una interfaz de programación.

    No puede escribir código para controlar el comportamiento de un objeto a menos que haya sido expuesto para Automation. Revise la documentación de la aplicación que creó el objeto para ver las limitaciones de uso de Automation con esta clase de objeto.

  • Ha cambiado un proyecto de .dll a .exe o viceversa. Si, por ejemplo, ya tiene un servidor .dll compilado y registrado, y luego cambia el tipo de proyecto a .exe y lo vuelve a compilar, el hecho de que .dll y .exe ya estén registrados en el sistema impide que pueda crear cualquier objeto. Para evitar el problema, será necesario anular manualmente el registro de los antiguos .dll o .exe. Esto se debe a la combinación de compatibilidad de proyecto y al cambio de un proyecto de .exe a .dll. En compatibilidad de proyecto, el CLSID se conserva pero no así el IID. Como el CLSID se conserva, la clase acaba siendo registrada en dos servidores: uno es un servidor en proceso y el otro un servidor local. Cuando se crea una instancia, se elige el servidor en proceso. Cuando se produce la consulta de la interfaz, el .dll no admite el IID porque es nuevo.

Para más información, seleccione el elemento en cuestión y presione F1 (en Windows) o AYUDA (en Macintosh).

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.