SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => VBA => Mensaje iniciado por: jpardo84 en Martes 5 de Agosto de 2008, 17:04

Título: Cerrar Instancia de Excel.Application
Publicado por: jpardo84 en Martes 5 de Agosto de 2008, 17:04
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
Título: Re: Cerrar Instancia de Excel.Application
Publicado por: m0skit0 en Miércoles 6 de Agosto de 2008, 10:53
Primero, fíjate en mi firma.

Prueba a declarar e iniciar Ap y Wb tal que así y me cuentas:

Código: Text
  1.  
  2. Dim Ap As Excel.Application
  3. Dim Wb As Excel.Workbook
  4.  
  5. Set Ap = New Excel.Application
  6. Set Wb = oExcel.Workbooks.Open(txtArchivo)
  7.  
  8.  
Título: Encontre la solucion
Publicado por: jpardo84 en Miércoles 6 de Agosto de 2008, 15:18
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
Título: Re: Cerrar Instancia de Excel.Application
Publicado por: ecorrea_pe en Lunes 1 de Septiembre de 2008, 19:38
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
Título: Re: Cerrar Instancia de Excel.Application
Publicado por: F_Tanori en Martes 2 de Septiembre de 2008, 07:07
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

La diferencia es que la ayuda solicitada es en VBA no en .Net  y el foro es de (VBA)

Saludos
Título: Re: Cerrar Instancia de Excel.Application
Publicado por: ecorrea_pe en Jueves 4 de Septiembre de 2008, 00:55
Bueno
Cambias el using por import  de VB.net

y las senticias debajo en este If .. son casi iguales que en VB que en C#

Saludos