• Martes 21 de Mayo de 2024, 13:44

Autor Tema:  Cerrar Excel  (Leído 7391 veces)

Jeremy

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Cerrar Excel
« en: Jueves 22 de Julio de 2004, 18:55 »
0
Hola amig@s. Tengo un problemilla, el cual no logro resolver, espero que vosotros podáis ayudarme:

Desde mi aplicación en VB hago una exportación de datos a Excel. La primera vez lo hace bien. Pero la segunda exportación que hago el Excel se queda bloqueado, en este caso lo que tengo que hacer para que a partir de la segunda exportación el Excel ya no de problemas es terminar el proceso excel.exe que se encuentra cargado en memoria. Esto lo hago "manualmente" desde el Administrador de procesos.

Cómo hago para desde el código de exportación, terminar el excel.exe? He probado con los consejos de alguno de vosotros, pero no da resultado. Este es el código con el que hago la exportación a Excel.

Código: Text
  1.  
  2. Private Sub mnuexp_Click()
  3. Dim i As Long
  4. Dim n As Long
  5.  
  6. lblinf.Visible = True
  7. lblinf.Caption = "Se están exportando " & lstlib.ListItems.Count & " registros. Esta operación puede tardar unos minutos, por favor espere..."
  8. pgbar.Visible = True
  9.  
  10. Screen.MousePointer = vbHourglass
  11. On Error Resume Next
  12. Set objExcel = GetObject(, "Excel.Application")
  13. If Err.Number Then
  14.     Err.Clear
  15.    
  16.     Set objExcel = CreateObject("Excel.Application")
  17.    
  18.     If Err.Number Then
  19.         MsgBox "No se pudo abrir Excel"
  20.     End If
  21. End If
  22.  
  23. Set objWorkbook = objExcel.Workbooks.Add
  24.  
  25. For i = 0 To lstlib.ListItems.Count
  26.     objWorkbook.ActiveSheet.Cells(i, 1).Value = lstlib.ListItems(i).Text
  27.     pgbar.Value = i * 100 / lstlib.ListItems.Count
  28.     For n = 0 To lstlib.ColumnHeaders.Count
  29.         lstlib.ColumnHeaders.Count = n
  30.         objWorkbook.ActiveSheet.Cells(i, n + 1).Value = lstlib.ListItems(i).ListSubItems(n).Text
  31.     Next n
  32. Next i
  33.  
  34. Range("C1:C" & i).Select
  35. Selection.NumberFormat = "#,##0.000 "
  36. Range("A1").Activate
  37. pgbar.Value = 0
  38. pgbar.Visible = False
  39. lblinf.Visible = False
  40. Screen.MousePointer = Default
  41. lblean.Caption = "Artículo " & lstlib.ListItems(lstlib.SelectedItem.Index).Text
  42. stbbar.Panels(1).Text = "Familia: " + lstfamilias.ListItems(lstfamilias.SelectedItem.Index).ListSubItems(1) + " " + "Subfamilia: " + lstsub.ListItems(lstsub.SelectedItem.Index).ListSubItems(1) + "" _
  43. + " " + "Artículo: " + lstlib.ListItems(lstlib.SelectedItem.Index)
  44. objExcel.Visible = True
  45.  
  46. Set objExcel = Nothing 'Con esto desvinculo el Excel de VB; en teoría...
  47.  
  48. objExcel.Application.Quit 'Con esto intento cerrar el Excel
  49.  
  50. End Sub
  51.  
  52.  
  53.  

A pesar de intentar desvincularlo
Citar
Set objExcel=Nothing
y de cerrarlo
Citar
objExcel.Application.Quit
no funciona.

Espero que me puedan ayudar, muchas gracias.

Jeremy º¿º
"Cuando quieres algo, todo el Universo conspira para que realices tu deseo..."

sujey_sanchez

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: Cerrar Excel
« Respuesta #1 en: Viernes 23 de Julio de 2004, 02:43 »
0
Jeremy, yo hago lo mismo en una aplicacion, la unica diferencia q veo es que tu tienes:
         Set objExcel = GetObject(, "Excel.Application")

Y yo tengo:
              Set objExcel = New Excel.Application

De resto tenemos las misma sentencias, aunq no uso el Quit al final solo el Set objExcel = Nothing .

cambia solo esa linea haber que tal... :P  :D
Sujey

Larrea

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Cerrar Excel
« Respuesta #2 en: Sábado 24 de Julio de 2004, 18:09 »
0
Hola,
Yo si utilizo Excel.application y con la diferencia de que creo el libro con
Workbooks.Add

Dim ApExcel As Object 'Abrir excel
Set ApExcel = CreateObject("Excel.application") 'Crear el objeto
ApExcel.Workbooks.Add ' Añadir nuevo libro
ApExcel.Visible = True ' True muestra la aplicación y False la oculta
'
ApExcel.Cells(1, 1).Formula = "texto de prueba"
ApExcel.range("A1", "G1").MergeCells = True
ApExcel.Cells(1, 1).Font.Bold = True
ApExcel.Cells(1, 1).Font.Size = 12
ApExcel.Cells(2, 1).Formula = "Texto d eprueba"
ApExcel.range("A2", "G2").MergeCells = True
'

ApExcel.Application.Quit ' Cerrar Excel con el método Abandonar en el objeto de la aplicación.
Set ApExcel = Nothing ' Liberar la variable de objeto.

Saludos

nostromo

  • Miembro MUY activo
  • ***
  • Mensajes: 134
    • Ver Perfil
    • http://win32cpp.cjb.net
Re: Cerrar Excel
« Respuesta #3 en: Domingo 25 de Julio de 2004, 08:01 »
0
Hola;

Para no tener problemas:

Código: Text
  1.  
  2. Dim xlsApp As Variant
  3.    
  4.     Set xlsApp = CreateObject("Excel.application")
  5.  
  6.  

Terminando con :

Set ApExcel = Nothing

Y sin olvidar:

Código: Text
  1.  
  2. Private Sub Form_Unload(Cancel As Integer)
  3.     Set xlsApp = Nothing
  4. End Sub
  5.  
  6.  

Nos vemos.

Jeremy

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Cerrar Excel
« Respuesta #4 en: Domingo 25 de Julio de 2004, 23:04 »
0
Gracias a todos por vuestras sugerencias y ayudas.... Aunq
"Cuando quieres algo, todo el Universo conspira para que realices tu deseo..."

Jeremy

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Cerrar Excel
« Respuesta #5 en: Domingo 25 de Julio de 2004, 23:11 »
0
Uyyy lo siento sin querer le dí a "Responder" y me salió el mensaje incompleto. Pues eso que agradezco vuestra ayuda y vuestra atención. Sigo teniendo el problema y es como les comentaba en un principio: cuando realizo la primera exportación a Excel todo va bien, pero en ese momento cierro la ventana de Excel sin cerrar mi programa, entonces es a partir de la segunda exportación cuando el Excel ya no va bien. y claro ahí tengo que desbloquearlo "manualmente " utilizando el "Administrador de tareas de Windows". Seguiré insistiendo

Como he dicho, una vez más gracias por todas vuestras sugerencias...

Jeremy º¿º
"Cuando quieres algo, todo el Universo conspira para que realices tu deseo..."