Ver Mensaje Individual
  #1  
Antiguo 09-06-2004
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile Defecto grave de Excel al estar celda en estado de edición

¡Buen día a todos!

Continúo con mi experiencia en el uso de componentes Servers versión Office 97, en Delphi 7. Agradezco a Román su atinada y oportuna respuesta a mi duda anterior (¿Funciona un compilado XP en PC con Office 2000?). Para mayor compatibilidad, me funciona mejor usar la versión 97 de dichos componentes.

Ahora me encuentro ante una situación extraña, que a primera vista me parece un importante defecto de la biblioteca COM de Excel.

Tengo una aplicación Delphi 7 que utiliza un componente TExcelApplication versión Office 97, para realizar de forma automática ciertas tareas con un libro Excel. Regularmente el usuario tendrá abierto algún documento en Excel antes de ejecutar el proceso de automatización de mi aplicación. El proceso de automatización se realiza correctamente, respetando los demás documentos que el usuario tenga abiertos en ese momento.

Sin embargo, si en ese momento está abierto un libro Excel con una de sus celdas en estado de edición, es decir, con el cursor de teclado parpadeando dentro de ella o en la barra superior de captura, entonces las sentencias que operan sobre el objeto TExcelApplication causan excepciones OLE.

Por ejemplo, una sentencia como
Código:
AEAplicacion.Workbooks.Open (....);
Eleva una excepción EOLEException OLE error 800A03EC


Y una sentencia como
Código:
AEAplicacion.Cells.Item [1, 1].Select;
Eleva una excepción EOLESysError La llamada fue rechazada por el destinatario

Increíblemente, si en Excel quito el modo de edición de la celda (presionando la tecla Esc, por ejemplo), las sentencias anteriores de mi programa se ejecutan como se espera, sin ningún problema.

Noté que en el entorno de Excel no puede grabarse, ejecutarse o detenerse una macro, cuando una celda se encuentra en estado de edición. Esto me hace suponer que durante el estado de edición de una celda se inhabilita cierta parte de la biblioteca COM de Excel, lo cual causa las excepciones anteriormente mencionadas.

No he encontrado un método QuitEditMode, o algo así, que pueda ejecutar antes que las demás instrucciones para evitar este problema.

Procederé a realizar una prueba temporal con la versión XP de los coponentes Server. Mientras tanto, les agradezco todas las aportaciones que puedan hacer al respecto.

¡Un abrazo!

Al González .

El azar es el último de los recursos
Responder Con Cita