Con la siguientes macros no te permite cambiar de hoja, no te permite cerrar, no te permite guardar, hasta que se presione el botón.
Pero una vez que presionan el botón y quieran realizar esas actividades, ¿de qué forma las macros lo pueden permitir?, es decir, de qué forma sabremos que ya presionaron el botón. ¿La macro que dices realiza algo en particular que podamos revisar que efectivamente ya presionaron el botón?
Se me ocurre que cuando abran el archivo borres la celda "D1" de la hoja "temporal".
Luego, cuando presionen el botón, al final de la macro del botón, deberás tener una instrucción para poner, por ejemplo, el texto: "presionado".
Con esa indicación, las macros pueden saber que el botón ya fue presionado.
La secuencia sería así:
1. En los eventos de workbook:
Private Sub Workbook_Open()
'Por.Dante Amor
Sheets("temporal").Range("D1") = ""
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Por.Dante Amor
'Para cerrar
If Sheets("temporal").Range("D1") = "" Then
MsgBox "Para cerrar, presiona el botón"
Cancel = True
Else
Sheets("temporal").Range("D1") = ""
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Por.Dante Amor
'Para guardar
If Sheets("temporal").Range("D1") = "" Then
MsgBox "Para guardar, presiona el botón"
Cancel = True
Else
Sheets("temporal").Range("D1") = ""
End If
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
'Por.Dante Amor
'Para cambiar de hoja
If Sheets("temporal").Range("D1") = "" Then
MsgBox "Para cambiar de hoja, presiona el botón"
Application.EnableEvents = False
Sh.Activate
Application.EnableEvents = True
Else
Sheets("temporal").Range("D1") = ""
End If
End Sub
2. En tu macro del botón pon esto:
Sub boton()
'Por.Dante Amor
' las instrucciones de tu macro
'
Sheets("temporal").Range("D1") = "presionado"
End Sub
De esa forma, cuando abres el libro, la celda D1 está en blanco, si quieren cambiar de hoja, guardar o cerrar, las macros se activan y si la celda D1 está en blanco no permitirá. Entonces ejecutas el botón, el botón al final de la macro escribe en D1 la palabra "presionado", por consiguiente, cuando intentan nuevamente cambiar de hoja, guardar o cerrar, las macros se activan y como la celda D1 tiene datos, entonces sí se permite la actividad, pero las macros nuevamente ponen la celda D1 en blanco, para que de esta forma si intentan realizar otra actividad (cambiar hoja, guardar o cerrar), será necesario que opriman nuevamente el botón.
Además la hoja "temporal" la puedes ocultar.
Espero que te sea de utilidad, de lo contrario dime cómo podríamos revisar que ya oprimieron el botón.