Liberar memoria

Tanto tiempo.
Pude caminar solo en esto de VBA para Excel durante ya bastante tiempo. Pero me surge un problema y hay que recurrir siempre a las fuentes dice mi padre.
Lo concreto es que mediante Visual Basic genero una instancia de Excel, hago lo que tengo que hacer en el libro, luego lo guardo y coloco la típica sentencia:
Set libro = Nothing
Luego en el administrador de tareas me aparece: "Excel" y se me cuelga después el explorador de windows. :'(
Como dato te doy lo que hago:
dim libro as excel.Workbook
set libro = Workbooks.Open(nomArchivo.xls)
'
uso el nomArchivo.xls
'
libro.SaveAs path .....
set libro = Nothing
¿Queda la aplicación abierta?

1 respuesta

Respuesta
1
Como veo estas utilizando una Referencia a la biblioteca de Excel
Dim Libro As Excel.Workbook
cuando tu abres un libro
set libro = Workbooks.Open(nomArchivo.xls)
Lo primero que hace el SO es abrir una instancia de Excel para poder abrir el libro, esta instancia es la que se queda colgada, por que liberamos la refencia al libro pero no "cierras" la instancia de Excel, prueba lo siguiente
libro. SaveAs path ...
libro.Close
Libro.Parent.Quit
Si no te funciona, entonces crea tu propia instancia de EXcel
Dim appExcel As Excel
Dim Libro As WorkBook
Set appExcel = Excel.Application
Set Libro = appExcel.Workbooks.Open(Ruta)
Fíjate como ahora tengo una variable del Excel, la cual puedo controlar y manipular como quiera
appExcel. Quit
Set appExcel = Nothing
El secreto esta en controlar la instancia que se ejecute y no dejar que el SO lo haga, que ya vez, no lo hace bien, para más detalles lee los siguientes artículos de mi página, saludos...
http://www.vbalym.netfirms.com/excel/excel.html#Lenguajes
Mauricio
Te agradezco mucho, ya que solucioné el problema del Excel. Del código utilicé la opción 2 pero agregándole New a la sentencia: Set appExcel = New Excel.Application
Me queda resolver un problema todavía que se tilda la PC con el uso del Access supongo. Utilizo ADO.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas