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.

OCULTAR HOJAS EN EXCEL A TRAVES DE UNA MACRO


OCULTAR HOJAS EN EXCEL A TRAVES DE UNA MACRO

¿Deseas conocer como ocultar las hojas de un libro de Microsoft Excel que no quieres que sean vistas por motivos de seguridad?
En este artículo te explicaremos como desarrollar un código de Visual Basic que te permite a través de una macro muy sencilla ocultar esas hojas que te interesa que no vean, además que ahorras tiempo ya que a través de la Macro es mucho mas sencillo y practico ocultar y mostrar las hojas.

PASO1: INSERTAR MÓDULO 

En un libro de Excel vas a ir a la cinta de Programador (Para el caso de Microsoft Excel 2007) donde vas a presionar en las siguinetes opciones:  Grupo Código y selecciona Visual Basic luego de esto va aparecer la ventana deVisual Basic en donde vas a seleccionar con el botón derecho del ratónMicrosoft Excel Objetos luego seleccionas Insertar y escoge de la lista que se despliega a continuación: Módulo  donde vas a alojar la sentencia para que el código de Visual Basic pueda ejecutarse.

PASO2: EJECUTAR MACRO

A continuación vas a copiar la siguiente sentencia en el Modulo 1 insertado en el paso 1  la cual va a permitir ejecutar la Macro para que se puedan ocultar y mostrar las hojas, para ejecutar esta Macro solo debes posicionarte con el cursor al inicio de cada sentencia  y presionar el botón de ejecución de la Macro(Ejecutar Sub/UserForm (F5)), el mismo procedimiento se realiza para ocultar y mostrar las hojas.
Private Sub OCULTAR()

Sheets("Hoja1").VISIBLE = xlVeryHidden

Sheets("Hoja2").VISIBLE = xlVeryHidden

With ActiveWindow

End With

End Sub

Private Sub MOSTRAR()

Sheets("Hoja1").VISIBLE = True

Sheets("Hoja2").VISIBLE = True

With ActiveWindow

End With

End Sub

PASO 3: FUNCIONALIDAD DE LA MACRO 

Vas a realizar las pruebas correspondientes para efectivamente probar la funcionalidad de la Macro, recuerda que esta Macro te permite Ocultar las hojas que desees y solo dejar visible las que lo ameriten, por ejemplo Oculta la Hoja 1 y la Hoja 2 pero deja visible la Hoja 3.