Deshabilitar botón cerrar de Excel

He quitado la cinta de opciones de Excel con las siguientes rutinas:

Private Sub Workbook_Open()

      ExecuteExcel4Macro ("show.toolbar(""ribbon"",0)")

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

      ExecuteExcel4Macro ("show.toolbar(""ribbon"",1)")

End Sub

Necesito también poder deshabilitar el botón cerrar de Excel (la X) para que sólo puedan cerrar el archivo desde un botón que tiene el siguiente código:

Private Sub CommandButton5_Click()

resultado = MsgBox("No se guardarán los cambios al cerrar", vbOKCancel + vbExclamation, "Atención")
If resultado = vbOK Then
     Application.DisplayAlerts = False
     Application.Quit
End If

End Sub

El botón de cierre de Excel sé que se puede deshabilitar con Cancel=True en el evento Workbook_BeforeClose, pero todo el código junto no funciona. Cuando le doy a este botón, y está deshabilitado el de cierre de la aplicación (X), este botón no funciona, me da el mensaje, pero no cierra Excel.

¿Cómo puedo hacer para que funcionen las dos cosas? Es decir, ¿qué no esté la cinta de opciones y tampoco funcione el botón cerrar de Excel?

1

1 Respuesta

3.688.050 pts. Si me amas, siempre voy a estar en tu corazón; si me...

H o l a :

Pon lo siguiente en un módulo. Ejecuta la macro SetStyle

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

En esta línea de la macro cambia a 1 para habilitar y cambia a 0 para deshabilitar

hMenu = GetSystemMenu(Application.hWnd, 0)  '0 deshabilitar la X. 1 habilitar la X

' : )
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
' : )

La macro funciona bien, sólo tuve que agregar PtrSafe por el tema de los 64 bits,  y cuando la ejecuto va perfecto. La cuestión es que al cerrar el fichero y volver a abrir, el botón cerrar de Excel vuelve a estar habilitado.

Cómo hago para que se deshabilite al abrir el libro. Probé ponerlo en el Thisworkbook, pero no funcionó. Tengo este código, no sé si será por éso

Private Sub Workbook_Open()

ExecuteExcel4Macro ("show.toolbar(""ribbon"",0)")
End Sub

Espero tu respuesta, y a ver si ya con ésto cierro todo lo que he hecho en este fichero :)

Muchas gracias desde ya.

Pon en el evento del libro esto:

Private Sub Workbook_Open()
    ExecuteExcel4Macro ("show.toolbar(""ribbon"",0)")
    Call SetStyle
End Sub

Previamente deberás tener en un módulo el código que te envié.


'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas