Gracias Elsa Matilde esta es la macros que tengo la de la imagen y la que inserte seguida de esta es la que me diste que es así:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'x Elsamatilde
'se debe volver a ocultar las hojas por las dudas que se abra sin habilitar las macros
Call ocultaHojas
End Sub
Si el libro se abre sin habilitar las macros se puede mostrar un mensaje similar al de la imagen:
Y si se habilitan las macros, se ejecutará el código que dejarás en el evento Open:
Private Sub Workbook_Open()
'x Elsamatilde
'se impide el movimiento de hojas
Application.ScreenUpdating = False
'se hacen visible todas las hojas
For Each Hoja In Worksheets
If Hoja.Name <> "INICIO" Then Hoja.Visible = True
Next
'se oculta la del mensaje
Sheets("INICIO").Visible = xlSheetVeryHidden
End Sub
Y en un módulo tendrás la que te oculta nuevamente y se llama desde los 2 eventos que te mencioné:
Sub ocultaHojas()
'x Elsamatilde
'primero vuelvo visible la hoja INICIO
Application.ScreenUpdating = False
Sheets("INICIO").Visible = True
'oculto el resto
For Each Hoja In Worksheets
If Hoja.Name <> "INICIO" Then Hoja.Visible = xlVeryHidden
Next
End Sub
¿Me gustaría que funcionaran las dos ya que si te fijas esta es para caducidad y seria perfecto que funcionara a la par con la tuya o te puedo pasar el archivo completo para que lo analices?