Programación General > VBA
Cerrar Instancia de Excel.Application
jpardo84:
Hola espero este bien...
Tengo un procedimiento en Acces que abre un archivo de Excel
'-----------------------------------
Private Sub Comando13_Click()
On Error GoTo Errores
Dim Ap As Object
Dim Wb As Object
Set Ap = CreateObject("Excel.Application")
Set Wb = Ap.workbooks.Open(txtArchivo) ' el texto con la ruta del archivo
Fin = Range("A65000").End(xlUp).Row
For N = 1 To Fin
'procesos
Next
Wb.Close SaveChanges:=False
Ap.Quit
Set Wb = Nothing
Set Ap = Nothing
MsgBox "El proceso de carga se terminó correctamente." & vbCrLf & Cadena, vbInformation
Exit Sub
Errores:
MsgBox Err.Description
End Sub
'-------------------------------
El problema es que no se esta cerrando realmente la instancia de Excel, y si intento ejecutar otra vez me sale "the remote server machine does not exist or is unavailable"
si alguien le ha sucedido lo mismo y ya lo ha solucionado te agradezco si me la compartes...Tank you
m0skit0:
Primero, fíjate en mi firma.
Prueba a declarar e iniciar Ap y Wb tal que así y me cuentas:
--- Código: Text --- Dim Ap As Excel.ApplicationDim Wb As Excel.Workbook Set Ap = New Excel.ApplicationSet Wb = oExcel.Workbooks.Open(txtArchivo)
jpardo84:
OK primero muchas gracias,
el prblema estaba en la linea
Fin = Range("A65000").End(xlUp).Row
cuando yo hago referencia al objeto Range o Cells cuando uso objeto de excel desde Access no lo debo hacer sin antes ponerle toda la jerarquia de objetos asi:
Fin = Wb.Worksheets("nombre_hoja").Range("A65000").End(xlUp).Row
no se por qué sucede pero sin esto no cierra la instancia y parece que crea otra de Excel que no se puede eliminar de la memoria, pero bueno, esta era la solución...gracias por su interes
ecorrea_pe:
Esto me ayudo a mi
using System.Runtime.InteropServices;
/////
//// todo el codigo necesario de tu aplicacion
////
//Limpiamos los objetos excel
if (apExcel != null) Marshal.ReleaseComObject(apExcel);
apExcel = null;
Saludos
Eriberto Correa
F_Tanori:
--- Cita de: "ecorrea_pe" ---Esto me ayudo a mi
using System.Runtime.InteropServices;
/////
//// todo el codigo necesario de tu aplicacion
////
//Limpiamos los objetos excel
if (apExcel != null) Marshal.ReleaseComObject(apExcel);
apExcel = null;
Saludos
Eriberto Correa
--- Fin de la cita ---
La diferencia es que la ayuda solicitada es en VBA no en .Net y el foro es de (VBA)
Saludos
Navegación
[#] Página Siguiente
Ir a la versión completa