No cierra la aplicacion con la "X" de la aplicacion

27/07/2006 - 18:25 por Manolito | Informe spam
Si yo pulso la "x" del libro este codigo funciona:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'
' Propósito: Parar todos los servicios antes de salir
'
If Application.Workbooks.Count = 1 Then
'Guardamos todos los cambios
ThisWorkbook.Close SaveChanges:=True
'No mostrar mensajes de salvar antes de salir
Application.DisplayAlerts = False
'Cerramos la conexion y los objetos
Hoja1.fCloseServer
'DesProgramamos las copias de seguridad
ProgramarBackups False
Application.DisplayAlerts = True

Application.Quit

End If
' Dejamos la barra como estaba
Application.DisplayStatusBar = oldStatusBar

End Sub

Pero si pulso la "x" de la aplicacion, esta se me queda abierta.
Yo lo que tengo es un programa relizado en excel y quiero que si solo está
abierta mi aplicacion se cierre el excel por completo, pero si el usuario
tiene algun otro libro abierto no quiero que cierre la aplicación.

Gracias, por todo.
 

Leer las respuestas

#1 Héctor Miguel
28/07/2006 - 02:55 | Informe spam
hola, Manolito !

Si yo pulso la "x" del libro este codigo funciona: Pero si pulso la "x" de la aplicacion, esta se me queda abierta.
Yo lo que tengo es un programa relizado en excel y quiero que si solo esta abierta mi aplicacion
se cierre el excel por completo, pero si el usuario tiene algun otro libro abierto no quiero que cierre la aplicacion.



1) la 'primera instruccion' [que se ejecuta luego de 'confirmarse'] cuando -solo- hay un objeto libro en la sesion ES...
-> ThisWorkbook.Close SaveChanges:=True

2) cualquier linea que 'siga' a una instruccion 'Close'... -> YA NO SE EJECUTA :-((
a) debido a que el archivo ya se ha cerrado [luego entonces]...
b) excel ya no puede 'leer' las instrucciones de un codigo 'que ya no existe' :))
-> haz una 'sencilla' prueba con una macro 'sencilla' -> EN UN LIBRO NUEVO +/- como la siguiente...
Sub Despues_de_cerrar()
ThisWorkbook.Close False
MsgBox "Cerrando el libro de las macros..."
End Sub

-> comenta si alcanzar a 'ver' el msgbox que se instruye en la linea que sigue al 'Close' ;)

3) [por lo tanto] la 'ultima' linea que debera ejecutarse [para este preciso caso y tipo] ES la instruccion 'Close' ;)
[decide cuando/como/... vas lo a 'forzar' y...] el 'Application.Quit' debera ir ANTES que la instruccion 'Close' :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ el codigo expuesto __
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'
' Propósito: Parar todos los servicios antes de salir
'
If Application.Workbooks.Count = 1 Then
'Guardamos todos los cambios
ThisWorkbook.Close SaveChanges:=True
'No mostrar mensajes de salvar antes de salir
Application.DisplayAlerts = False
'Cerramos la conexion y los objetos
Hoja1.fCloseServer
'DesProgramamos las copias de seguridad
ProgramarBackups False
Application.DisplayAlerts = True
Application.Quit
End If
' Dejamos la barra como estaba
Application.DisplayStatusBar = oldStatusBar
End Sub

Preguntas similares