Impedir cierre de libro mediante( X )

Quiero evitar que usuarios puedan guardar cambios en un Libro, lo que me gustaría es inhabilitar el botón de guardar así como Archivo guardar como, de igual manera inhabilitar el cierre del libro mediante la "X" o Archivo cerrar libro. Solo podrian cerrar el libro con un botón de "Salir" y sin guardar cambios.

Tengo esto que he probado pero solo me impide cerrar el libro pero me sigue permitiendo guardar cambios.

En ThisWorkbook tengo lo siguiente:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Cierre <> "SI" Then
Cancel = True
MsgBox "Modo de cierre no permitido..."
End If
End Sub

Y en el botón de "Salir" tengo lo siguiente

Public Cierre As String

Sub CerrarArchivo()
Cierre = "SI"
ActiveWorkbook.Close SaveChanges:=True
End Sub

1 Respuesta

Respuesta
1

Pon el siguiente evento en Thisworkbook

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    MsgBox "No es posible guardar el archivo", vbExclamation, "SALIR"
    Cancel = True
End Sub

Pon lo siguiente en un módulo para ejecutar el botón "salir"

Sub Salir()
    ThisWorkbook.Close False
End Sub

Para deshabilitar la "X" para cerrar el libro, ejecuta la siguiente macro

Option Explicit
'
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
'
Public Sub SetStyle()
    Dim hMenu As Long
    hMenu = GetSystemMenu(Application.hWnd, 0)  '0 deshabilitar la X. 1 habilitar la X
    DeleteMenu hMenu, &HF060, 0&
End Sub

Nota: Es para la versión de equipo a 32bits, si tu equipo es de 64 bits, busca la función similar.


Sal u dos. Dante Amor, no olvides valorar.

Hola Dante Amor gracias por la ayuda. Estoy haciendo las pruebas pero cuando ingreso en Thisworkbook el código efectivamente  no me permite guardar los cambios y no puedo hacer que quede grabada la macro.

Entra al libro con las macros deshabilitadas, pon la macro en los eventos, guarda el libro. Entra al libro con las macros habilitadas y prueba.

Desde luego, tendrás que adecuar el archivo para que tengan que entrar al archivo y habilitar las macros, puedes ocultar todas las hojas, si entran con las macros deshabilitadas entonces todas las hojas (excepto una) estarán ocultas, si entran con las macros habilitadas entonces con una macro en el evento open muestras las hojas. Sobre este punto tengo varias respuestas.

Pero primero termina de probar la parte del guardado.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas