Permitir 3 intentos de contraseña para usar un archivo de Excel antes de cerrarse
En un post anterior llamado Simular acceso con usuario y password en Excel con formulario vba presentaba un ejemplo en el que teníamos un formulario que nos solicita usuario y contraseña. Tanto el usuario como la contraseña los tomaba de una tabla y sólo cuando ambos coincidían, permitía cerrar el formulario y continuar.
En este ocasión, y tomando en cuenta el post mencionado, comparto un formulario que se lanza al momento de abrir nuestro archivo de Excel y nos solicita una contraseña para usarlo.
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.
Cómo funciona
A diferencia del otro formulario, este sólo pide una clave de acceso para poder usar el archivo. En caso de que intentemos en 3 ocasiones una clave y ésta sea inválida, se cerrará el archivo.
Código
'Definimos la variable pública Intentos Public Intentos As Byte ' 'Validar la clave Private Sub CommandButton1_Click() If Me.txtPass.Value = 1234 Then MsgBox "Contraseña válida. Se cerrará el formulario.", _ vbInformation, "EXCELeINFO" Unload Me Else Intentos = Intentos + 1 MsgBox "Contraseña inválida. Llevas " & Intentos & " intento(s).", _ vbInformation, "EXCELeINFO" Me.txtPass.SetFocus Me.txtPass.Value = "" End If If Intentos = 3 Then MsgBox "Has cumplido 3 intentos. Aquí se cerrará el archivo Excel.", _ vbInformation, "EXCELeINFO" Unload Me ActiveWorkbook.Close SaveChanges:=False Else End If End Sub ' 'Formateamos los objetos del formulario Private Sub UserForm_Initialize() With Me .txtPass.PasswordChar = "*" .txtPass.MaxLength = 8 End With End Sub ' 'Evitamos que use la x para cerrar el 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
Animación del formulario en acción