Código para cerrar excel...

Buenos días, estoy haciendo una herramienta con macros en excel, quiero que programar un botón que me permita guardar y salir de excel, pero también evitar que el usuario del sistema cierre el libro con la POR o de alguna otra forma, es decir, que la única manera de salir de la aplicación sea con el botón. Espero haberme explicado...
Gracias de antemano...

1 respuesta

Respuesta
2
Utiliza el evento BeforeClose del objeto Workbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Cancel = -1 'esto sirve para que no se salga lo puedes condicionar
End Sub
Gracias, el código me funcionó, sin embargo cuando trato de cerrar la herramienta con el botón que hice para eso tampoco me lo permite, no se si es por el código que utilicé en el botón, me gustaría saber si existe otra instrucción que pueda usar para cerrar el libro. Lo que intento es que el libro solo pueda cerrarse con el botón. El código que utilicé es el siguiente:
Sub cerrar()
 

If ThisWorkbook.Saved = False Then
    ThisWorkbook.Save
  End If
Application.Quit
End Sub

Gracias... Saludos!
Tu código esta bien
Sólo haría falta una variable para que funcione
Fuera de todas las MACROS necesitas declarar una variable publica
ejemplo
Public AutorizaCierre as Boolean
Luego en tu código haces lo siguiente
Sub cerrar() 
If ThisWorkbook.Saved = False Then 
    ThisWorkbook.Save 
End If
<span style="font-weight: bold;">AutorizaCierre =true
<span style="font-weight: normal;">Application.Quit 
End Sub</span></span>
y en el código que te envié 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    if Not AutorizaCierre Then Cancel = -1 
End Sub
Hice tal como me dijo, sin embargo mi problema persiste y no me deja cerrar la aplicación con el botón, no se si es que no declaré la variable en el lugar que correspondía o algo con el código que me sugirió, podría por favor detallarme la solución si no es molestia.
Gracias...
Pon todo el código en el Objeto ThisWorkbook
Public AutorizaCierre As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Not AutorizaCierre Then Cancel = -1
End Sub
Sub cerrar()
If ThisWorkbook.Saved = False Then
    ThisWorkbook.Save
End If
AutorizaCierre = True
Application.Quit
End Sub
No olvides finalizar y calificar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas