miércoles, 25 de febrero de 2015

Como proteger y desproteger hojas en Excel a través de VBA (Macro)

Una pregunta que a menudo nos hacen, “¿Cómo puedo proteger con contraseña y desproteger todas las hojas de cálculo en mi libro de una sola vez? Tengo muchas hojas y tengo que proteger y desproteger cada hoja por separado.” Desafortunadamente no hay ninguna característica estándar en MS Excel® que nos permita proteger y desproteger todas las hojas de una sola vez, sin embargo, podemos usar un código VBA bastante simple para hacer esto por nosotros.

¡EN PRACTICA!

Sigue los siguientes pasos y lograras proteger y desproteger todas las hojas de un libro de MS Excel® mediante un UserForm (Formulario de usuario) de Visual Basic:
  • El libro de Excel debe estar habilitado para Macros (.xlsm), ya que mediante VBA es que es posible trabajar con esta opción.
  • Ve a la Cinta de opciones/ Programador/ Grupo Código, Botón Visual Basic (MS Excel® 2007), para MS Excel® 2003 Barra de herramientas/ Macro/ Editor de Visual Basic o desde el libro abierto presionas (Alt + F11).
  • En Microsoft Excel Objetos inserta un UserForm.
  • Del Cuadro de herramientas que se genera a continuación vas a insertar dentro del UserForm un Cuadro de texto (ab|).
  • Asegúrate de que el Cuadro de texto este seleccionado y luego ve a Propiedades (F4). En la ventana Propiedades del cuadro de texto desplázate hasta PasswordChar y en el cuadro blanco a la derecha escribe un asterisco * (Esto para cuando ingreses la contraseña para proteger y desproteger las hojas se muestre un asterisco en vez de los caracteres que escribas).
  • Ahora del Cuadro de herramientas selecciona un Botón de comando, haz clic en el formulario de usuario y colócalo en la parte superior derecha, con el Botón de comando aún seleccionado, ve a Propiedades (F4), desde la ventana de propiedades del control CommandButton desplázate hasta Caption y en el cuadro blanco a la derecha escribe la palabra: OK.
  • Ahora selecciona el formulario de usuario y a partir de ahí ve a la ventana Propiedades busca Caption y cambia UserForm1 por: Proteger o Desproteger todas las hojas, una vez seguido los pasos anteriores el formulario de usuario debe quedar como lo mostrado en la siguiente imagen:
  • En la subcarpeta “Formularios” vas a presionar Ver código o también puedes presionar la tecla (F7) con el formulario seleccionado y coloca ahí exactamente el siguiente código:
Private Sub CommandButton1_Click()

Dim WSheet As Worksheet

    For Each WSheet In Worksheets

        If WSheet.ProtectContents = True Then

            WSheet.Unprotect Password:=TextBox1.Text

        Else

            WSheet.Protect Password:=TextBox1.Text

        End If

    Next WSheet

Unload Me

End Sub
Inserta en Microsoft Excel Objetos un Modulo en el cual vas a colocar el siguiente código:
Sub MostrarFormulario()

    UserForm1.Show

End Sub
  • Guarda los cambios realizados a ahora ve al libro de Excel presionando (Alt + Q).
En el libro abierto desde cualquier hoja ve a la Cinta de Opciones ficha Programador/ Macros o presionas la combinación de teclas (Alt+ F8) y ejecutas la Macro denominada “MostrarFormulario” para llamar esta macro adicionalmente tienes la posibilidad de asignarle una Tecla de método abreviado de acuerdo a tu preferencia.
Al ejecutar la macro llamas al Formulario de Usuario en el cual podrás desproteger todas las hojas de trabajo que están protegidas y proteger todas las hojas de cálculo que no están protegidas.

No hay comentarios: