Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

se me queda Excel cargado en memoria al abrirlo desde VB6

Estas en el tema de se me queda Excel cargado en memoria al abrirlo desde VB6 en el foro de Visual Basic clásico en Foros del Web. Hola amigos me pueden ayudar. tengo este problema, con una aplicacion que desarrolle en VB6.0 estoy habriendo un archivo que tengo en excel para ello ...
  #1 (permalink)  
Antiguo 30/03/2007, 11:04
Avatar de wiro  
Fecha de Ingreso: abril-2006
Mensajes: 72
Antigüedad: 18 años
Puntos: 0
se me queda Excel cargado en memoria al abrirlo desde VB6

Hola amigos me pueden ayudar.

tengo este problema, con una aplicacion que desarrolle en VB6.0 estoy habriendo un archivo que tengo en excel para ello uso los objeto Excel.Application para abrir la aplicaicon, Excel.Workbook para abrir el libro y Excel.Worksheet para abrir la hoja, ok

ya con el libro abierto tomo los datos de la hoja y estos datos los guardos en un tabla que tengo un una BD en access, esto lo hace muy bien el asunto es que al salirme de la aplicacion que tengo en VB6 en memoria me queda cargado el excel, de tal manera que si intento abrir el excel de nuevo me dice que la aplicacion ya esta corriendo y esto es por que esta cargado en memoria.

lei un poco y encontre que para cerrar el excel desde VB debo usar la siguiente instruccion con cada uno de los objetos que use, la instruccion es

Set ExcApp = Nothing
Set ExcLibro = Nothing
Set ExcHoja = Nothing


ExcApp, ExcLibro, ExcHoja son los nombres de las variables que apunta a los objetos.

he ehcho esto con cada objeto pero aun asi no me funciona, se me sigue quedando el excel en memoria de la computadora, es mas si le doy Ctrol + Alt + Supr ahi puedo verlo y desde ahi tengo que darle finalizar tarea.

alguien me puede ayduar con esto.

gracias
  #2 (permalink)  
Antiguo 30/03/2007, 12:41
Avatar de tazzito  
Fecha de Ingreso: agosto-2006
Mensajes: 381
Antigüedad: 17 años, 9 meses
Puntos: 2
Re: se me queda Excel cargado en memoria al abrirlo desde VB6

pega el codigo entero para ver, pero prueba por si acazo con un .close antes del nothing
  #3 (permalink)  
Antiguo 30/03/2007, 16:39
Avatar de wiro  
Fecha de Ingreso: abril-2006
Mensajes: 72
Antigüedad: 18 años
Puntos: 0
Re: se me queda Excel cargado en memoria al abrirlo desde VB6

Ok ahi le dejo el codigo, si alguien le sirve, pero quien me puede ayudar a cerrar el excel y que este no quede cargado en memoria al salirme de la aplicacion.

Sub TrasladarCuotas()
Dim ExcApp As Excel.Application
Dim ExcLibro As Excel.Workbook
Dim ExcHoja As Excel.Worksheet
Dim rsa As New ADODB.Recordset
Dim rs As New ADODB.Recordset
Dim cmd As New ADODB.Command

On Local Error GoTo msgErrF


Archivo = File1.Path & "\" & File1.FileName

Set ExcApp = New Excel.Application
Set ExcLibro = ExcApp.Workbooks.Open(Archivo)
Set ExcHoja = ExcLibro.Worksheets(Trim(txtHoja))

Barra.Visible = True
Barra.Max = Val(txtfila2 - txtfila1)
Barra.Value = Val(txtfila1)
min1 = 0

Set cmdlocal = New ADODB.Command
cmdlocal.Prepared = True
cmdlocal.ActiveConnection = strCone
cmdlocal.CommandTimeout = 20000

cmdlocal.CommandText = "select * from Tabla where campo1=0"
rsa.Open cmdlocal, , adOpenDynamic, adLockOptimistic

For i = Val(txtfila1) To Val(Me.txtfila2)

DoEvents

datos= Trim(ExcHoja.Range(CStr(txtCampos(0).Text & i)).Value)

With rsa
.AddNew
!campo1 = 1
!campo2 = IIf(datos = "", Null, datos
.Update
End With

OtroDato:
min1 = min1 + 1
Barra.Text = " Trasladando los datos " & min1 & " DE " & Barra.Max

DoEvents

If min1 <= txtfila2.Text Then
Barra.Value = min1
End If

Barra.Value = Barra.Value + 1
Next i

Set ExcApp = Nothing
Set ExcLibro = Nothing
Set ExcHoja = Nothing
Barra.Visible = False
Exit Sub
msgErrF:
q = Err.Number
If Err.Number = 9 Then
Set ExcApp = Nothing
Set ExcLibro = Nothing
Set ExcHoja = Nothing

wMsgErr = "Ocurrio un error en el traslado de clientes. El nombre de la hoja es incorrecto."
Barra.Visible = False
Exit Sub
Else
Set ExcApp = Nothing
Set ExcLibro = Nothing
Set ExcHoja = Nothing

wMsgErr = "Ocurrio un error en el traslado de clientes. " & Err.Description
Barra.Visible = False
Exit Sub
End If
End Sub
  #4 (permalink)  
Antiguo 31/03/2007, 01:46
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
Sonrisa Re: se me queda Excel cargado en memoria al abrirlo desde VB6

Cita:
Iniciado por tazzito
pega el codigo entero para ver, pero prueba por si acazo con un .close antes del nothing
Lo que te sugiere "tazzito" es la solución a tu problema. Es decir:
Código:
ExcApp.DisplayAlerts = False
ExcApp.Quit 
La primera línea impide que al cerrar el archivo EXCEL recibas preguntas como "Desea guardar el archivo"... o cosas por el estilo.

Y la segunda línea es la que cierra el EXCEL: equivale a -cuando tenés una planilla EXCEL/WORD etc. abierta- seleccionar Archivo ---> Salir.

Creo que corresponde ".Quit" pero -por las dudas- también prueba ".Close" como te sugiere "tazzito".

Saludos
  #5 (permalink)  
Antiguo 14/05/2007, 13:21
 
Fecha de Ingreso: mayo-2007
Mensajes: 1
Antigüedad: 17 años
Puntos: 0
Re: se me queda Excel cargado en memoria al abrirlo desde VB6

la primera linea copia la hoja que deseas guardar, las siguientes abren la ventana de windows para guardar el archivo. Para cerrar excel de memoria manten el orden a partir del xlbook.Close, si lo varias se mantiene abierto.
Yo tenía el mismo problema, pero lo solucioné como te indico.




xlsheet.Copy

fname = xlapp.GetSaveAsFilename( _
fileFilter:="Libro de Microsoft Excel (*.xls), *.xls")
If fname = False Then
GoTo NoSaveExcel
Else
On Error GoTo NoSaveExcel
xlbook.SaveAs FileName:=fname
xlbook.Close
Set xlapp = Nothing
Set xlsheet = Nothing
Set xlbook = Nothing
MsgBox "El Reporte se guardó satisfactoriamente", vbInformation, "Reportes EXCEL"
End If

Exit Sub
NoSaveExcel:
xlbook.Close savechanges:=False
Set xlapp = Nothing
Set xlsheet = Nothing
Set xlbook = Nothing
MsgBox "El Reporte no fué guardado", vbInformation, "Reportes EXCEL"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 13:57.