Obligar a que activen macros para que la hoja funcione

¿

¿Habrá alguna macros que obligue al usuario a activarla para poder trabajar y si no lo activan simplemente que no funcione la hoja? O que este desaparecida

2 Respuestas

Respuesta
2

Debes tener una hoja inicial y el resto ocultas. Se ocultan al cerrar el libro y por seguridad también al guardar, es decir en los eventos BeforeClose y BeforeSave del objeto ThisWorkbook:

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

Si te quedó todo claro no olvides valorar esta respuesta.

Respuesta
2

Es un procedimiento que debes seguir:

1. Oculta las hojas desde VBA en la propiedad Visible, selecciona VeryHidden, solamente deja una hoja visible.

2. Si no habilitan las macro, las hojas no se verán.

3. Si habilitan las macros, entonces puedes mostrar todas las hojas o bien, trabajar con las hojas ocultas desde las macros.

Así muestras las hojas:

Sub MostrarHojas()
    For Each h In Sheets
        h.Visible = -1
    Next
End Sub

O puedes poner en el evento open que se muestren las hojas:

Private Sub Workbook_Open()
    For Each h In Sheets
        h.Visible = -1
    Next
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

buenisima dante, pero solo una duda se pueden volver habilitar las hojas en la parte de abajo si estan ocultas, como hay que hacerle para que no las habiliten?

Las pueden hacer visibles, pero para que no las ocupen, puedes proteger cada hoja con un password.

Por ejemplo:

Sub PonerPwd()
    For Each h In Sheets
        h.Protect "abc"
    Next
End Sub

Y para quitar el password

Sub QuitarPwd()
    For Each h In Sheets
        h.Unprotect "abc"
    Next
End Sub

Entonces el procedimiento sería:

Proteger las hojas

Ocultar las hojas

Guardar el archivo

---

Ya cuando abran el archivo y ejecuten las macros, cada vez que necesites una hoja, puedes desprotegerla, hacer la visible, continuar con tu macro, antes de terminar tu macro, ocultar la hoja y proteger nuevamente la hoja.

---

Puedes dejar oculta la hoja, pero eso depende de cómo está desarrollada la macro.

Si la hoja está oculta y tienes esto:

Hoja1.select

variable = range("B5")

Te va a enviar un error, pero puedes dejar la hoja oculta y tener esto:

variable = Hoja1.Range("B5")

Con lo anterior no es necesario que hagas visible la hoja.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas