3 intentos de contraseña para abrir un archivo de Excel y no poder usar si las macros están deshabilitadas

En este tutorial armaremos un archivo de Excel que sólo podrá usarse si ingresamos una contraseña. En caso de ingresar una contraseña erróneamente en 3 ocasiones, el archivo se cerrará. Además, si el archivo se abre con las macros deshabilitadas, entonces se mostrará sólo una hoja informándonos que debemos usarlo con las macros habilitadas.

Ver video 3 intentos para abrir archivo de Excel

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Primeros pasos

La Hoja1 será la hoja principal del archivo y la Hoja2 será la hoja donde se mostrarán instrucciones para usar el archivo. Lo primero que debemos hacer es bloquear algunos elementos para no usar el archivo en caso de que las macros estén deshabilitadas:

  • En la pestaña Revisar elegimos Proteger libro. Marcamos Estructura y asignamos una contraseña.
  • Entramos al IDE de VBA usando la combinación [Alt] + [F11].
  • Elegimos la Hoja1 y en la ventana propiedades elegimos la propiedad Visible y elegimos el valor xlSheetVeryHidden.

La Hoja1 es la hoja principal. La Hoja2 es la hoja que se mostrará si las macros están deshabilitadas.

Figura 1. La Hoja1 es la hoja principal. La Hoja2 es la hoja que se mostrará si las macros están deshabilitadas.

Hasta este punto es importante Guardar el archivo y que se mantengan los cambios que hemos realizado en el archivo.

Diseñamos el formulario

Diseñamos el formulario en el IDE de VBA que nos pedirá la contraseña.

Figura 2. Diseñamos el formulario en el IDE de VBA que nos pedirá la contraseña.

Usaremos el evento Initialize para asignar el carácter del asterisco como el carácter que se mostrará en lugar de los caracteres que se ingresan. El carácter asterisco lo usaremos en la propiedad PasswordChar.

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo
'http://www.exceleinfo.com/uso-de-colores-en-excel-con-macros/
'
'Al iniciar el formulario
Private Sub UserForm_Initialize()

Me.TextBox1.PasswordChar = "*"

End Sub

Ahora usaremos el evento QueryClose para mostrar un mensaje cada vez que intentemos cerrar el formulario sin ingresar contraseña. Anularemos la acción de cerrado del formulario asignando True al argumento Cancel.

'Al presionar la X del formulario
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

If CloseMode = vbFormControlMenu Then
    
    Cancel = True
    MsgBox "Por favor, ingresa una contraseña.", vbInformation, "EXCELeINFO"

End If

End Sub

Se muestra el mensaje al intentar cerrar el formulario sin ingresar contraseña.

Figura 3. Se muestra el mensaje al intentar cerrar el formulario sin ingresar contraseña.

Al presionar el botón, se validará que la contraseña sea igual a 1234, en todo caso se mostrará un mensaje indicando cuántos intentos de contraseña llevamos. En caso de ingresar la contraseña erróneamente en 3 ocasiones, se cerrará el formulario.

'Al presionar el botón Aceptar
Private Sub CommandButton1_Click()

Static Intentos As Integer
Dim Password As String: Password = "1234"

If Me.TextBox1.Value = Password Then
    
    ThisWorkbook.Unprotect Password:=5
    MsgBox "Bienvenido.", vbInformation, "EXCELeINFO"
    Sheets("Hoja1").Visible = xlSheetVisible
    Sheets("Hoja2").Visible = xlSheetVeryHidden
    Unload Me
    
Else
    
    Intentos = Intentos + 1
    
    MsgBox "Llevas " & Intentos
    Me.TextBox1.SetFocus
    Me.TextBox1.Value = ""
    
End If

If Intentos = 3 Then
    
    MsgBox "3 intentos. El archivo se cerrará.", vbInformation, "EXCELeINFO"
    Unload Me
    ThisWorkbook.Close SaveChanges:=False

End If

End Sub

Al ingresar un password incorrecto se mostrará el número e intentos que llevamos.

Figura 4. Al ingresar un password incorrecto se mostrará el número e intentos que llevamos.

Ahora usaremos el evento Open del archivo para proteger la estructura. Al proteger la estructura del archivo estamos prohibiendo insertar o eliminar hojas.

'Al abrir el archivo
Private Sub Workbook_Open()

ActiveWorkbook.Protect Password:=5, Structure:=True
frmPassword.Show

End Sub

Al abrir el archivo, si el usuario no habilita las macros en el archivo, no podrá usar el archivo. Por eso es importante habilitar el contenido y/o habilitar las macros.

Para poder usar el archivo será necesario que las macros estén habilitadas.

Figura 5. Para poder usar el archivo será necesario que las macros estén habilitadas.

Al final usaremos el evento BeforeClose, o antes de cerrar, para que cuando cerremos el archivo mostramos la Hoja2, ocultamos la Hoja1 y protegemos la estructura del archivo.

'Antes de cerrar el archivo
Private Sub Workbook_BeforeClose(Cancel As Boolean)

Sheets("Hoja2").Visible = xlSheetVisible
Sheets("Hoja1").Visible = xlSheetVeryHidden

ActiveWorkbook.Protect Password:=5, Structure:=True

ActiveWorkbook.Close SaveChanges:=True

End Sub

Descargar el archivo de ejemplo

Descargar el ejemplo 3 intentos para abrir archivo – EXCELeINFO.zip

You may also like...