Programación General > VBA

 Cerrar Instancia de Excel.Application

(1/2) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa