error HRESULT: 0x800A01A8 en aplicación de vb .net y excel 97

04/08/2006 - 10:18 por sgr | Informe spam
Hola,
Estoy haciendo una aplicación con vb .net y excel 97, en ella tengo una
función que inserta filas y otra que visualiza el fichero de excel.
Mi problema surge cuando visualizo el fichero (lo guardo y lo cierro) y
después intento insertar otra fila, en este momento capturo una excepción
System.Runtime.InteropServices.COMException que me devuelve "HRESULT:
0x800A01A8".
Además cuando salgo de la aplicación veo que el proceso excel.exe sigue
corriendo aunque no tenga ninguna hoja abierta y elimine todas las
referencias poniéndolas igual a nothing.

Muchas gracias.
 

Leer las respuestas

#1 SoftJaén
05/08/2006 - 13:37 | Informe spam
"sgr" escribió:

Estoy haciendo una aplicación con vb .net y excel 97, en ella tengo una
función que inserta filas y otra que visualiza el fichero de excel.
Mi problema surge cuando visualizo el fichero (lo guardo y lo cierro) y
después intento insertar otra fila, en este momento capturo una excepción
System.Runtime.InteropServices.COMException que me devuelve "HRESULT:
0x800A01A8".



Hola:

Si ver lo que estás ejecutando, ignoro por completo el motivo para que
obtengas la excepción que nos comentas.

Dices que visualizar el archivo, lo guardas y lo cierras, y que la excepción
se produce cuando posteriormente deseas insertar otra fila. Te pregunto,
¿tienes abierta alguna instancia de Excel para que se pueda insertar la
fila, porque si la has cerrado, difícilmente vas a poder insertar alguna
fila? :-)

Además cuando salgo de la aplicación veo que el proceso excel.exe sigue
corriendo aunque no tenga ninguna hoja abierta y elimine todas las
referencias poniéndolas igual a nothing.



Normalmente, al cerrar tu aplicación suele desaparecer el proceso del
Administrador de Tareas de Windows, pero si continúa apareciendo, es porque
algo te has dejado abierto. ¿El qué? Como te he dicho antes, si ver el
código que estás ejecutando, lo ignoro por completo.

De todas formas, aunque no se recomienda, puedes obligar a que se lleve a
cabo una recolección de elementos no utilizados, para asegurarte que
definitivamente desaparece el proceso de Excel:

' Salimos de Excel
'
oApp.Quit()
oApp = Nothing

' Obligamos a realizar una recolección de
' elementos no utilizados.
'
GC.Collect()

' Detenemos el proceso actual hasta que finalice
' el método Collect
'
GC.WaitForPendingFinalizers()

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Preguntas similares