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.

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Manolito
28/07/2006 - 07:34 | Informe spam
Lo he dejado así , y de esta manera ya me funciona ¿Que os parece?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'
' Propósito: Parar todos los servicios antes de salir
'

'Cerramos la conexion y los objetos
Hoja1.fCloseServer
'DesProgramamos las copias de seguridad
ProgramarBackups False
'No mostrar mensajes de salvar antes de salir
Application.DisplayAlerts = False
'Guardamos todos los cambios
ThisWorkbook.Save
Application.DisplayAlerts = True


If Application.Workbooks.Count = 1 Then

Application.Quit

End If

' Dejamos la barra como estaba
Application.DisplayStatusBar = oldStatusBar

End Sub

"Héctor Miguel" escribió en el mensaje
news:%23%
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




Respuesta Responder a este mensaje
#3 Héctor Miguel
28/07/2006 - 08:00 | Informe spam
hola, Manolito !

Lo he dejado asi, y de esta manera ya me funciona Que os parece?



que mejor que ya te esta funcionando ? ;)
solo me queda la duda de si son 'realmente necesarias' las [2] instrucciones '.DisplayAlerts' -?-

saludos,
hector.

__ el codigo expuesto __
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'
' Propósito: Parar todos los servicios antes de salir
'
'Cerramos la conexion y los objetos
Hoja1.fCloseServer
'DesProgramamos las copias de seguridad
ProgramarBackups False
'No mostrar mensajes de salvar antes de salir
Application.DisplayAlerts = False
'Guardamos todos los cambios
ThisWorkbook.Save
Application.DisplayAlerts = True
If Application.Workbooks.Count = 1 Then
Application.Quit
End If
' Dejamos la barra como estaba
Application.DisplayStatusBar = oldStatusBar
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida