miércoles, 2 de octubre de 2013

Como evitar el acceso a una hoja de Excel con contraseña


Hoy por la mañana escribieron en mi blog, preguntándome como evitar, dentro de un archivo de Excel, que seleccionen una hoja de Excel.

No se quiere proteger la hoja, ni las celdas, sino que lo que se busca, es que una persona cuando cambie a una hoja específica, aparezca un cuadro de texto solicitando una contraseña.

Si la contraseña es correcta, entonces que permita el acceso a la hoja, y si no es correcta simplemente no permita  el acceso a dicha hoja.


Vamos a poner el siguiente caso:

Paso 1: Tenemos un archivo de Excel con 3 hojas:



Paso 2: En Excel presionamos las teclas ALT+F11 (en cualquier versión del Excel es igual)

Al presionar estas teclas nos abrirá el Visual Basic for Application (VBA), como mostramos en la siguiente imagen:


En el Explorador de Proyecto, hacemos doble clic en el objeto ThisWorkBook.

Paso 3: En la pantalla en blanco que nos apareció copiaremos el siguiente código:

Public HojaInicial As Worksheet
Public HojaActual As Worksheet

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Set HojaActual = Sh
CompruebaHoja
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Set HojaInicial = Sh
End Sub

Sub CompruebaHoja()
Application.EnableEvents = False
HojaInicial.Select
'En la siguiente linea debo colocar el nombre de la Hoja, reemplazando Hoja2, NO BORRAR las comillas
If HojaActual.Name = "Hoja2" Then
    Respuesta = InputBox("Ingrese la contraseña para poder entrar en la hoja")
    'En la siguiente linea cambias la contraseña
    If Respuesta = "Secreto" Then
        HojaActual.Select
    Else
        MsgBox "No tiene autorización para ingresar a esta hoja"
        Application.EnableEvents = True
        Exit Sub
    End If
Else
    HojaActual.Select
End If
Application.EnableEvents = True
End Sub

Paso 4: Este código lo que hace es darle una contraseña de acceso a la "Hoja2", la contraseña es "Secreto". 

Si desea cambiar el nombre de la hoja, cambie la linea donde indica Hoja2.

Si desea cambiar la contraseña, cambie la palabra Secreto

Paso 5: Cerramos el Visual Basic, y regresamos al Excel. Cuando hagamos clic en la "Hoja2" nos aparecerá el siguiente cuadro:


Debemos introducir la palabra Secreto (Ojo con S mayúscula), si deseamos ingresar a la Hoja2, sino no podremos ingresar a dicha Hoja.

Nota Importante: Como hemos escrito código en Visual Basic, el archivo debe guardarse como tipo: "Excel habilitado para macros", o guardarlo como versión "Excel 97-2003".

Espero que les haya servido, cualquier consulta no duden en indicarmelo y con gusto los ayudo.

Saludos cordiales,

Ing. Enrique Neciosup Morales
informes@pcvipcr.com