En el siguiente artículo usted aprenderá a realizar un login básico en un formulario usando VBA. Este consiste en que cuando el usuario quiera acceder al libro Excel, este inmediatamente muestre una ventana de Login.
Además, esta venta que se abre para solicitar las credenciales, impide que el libro se muestre en su totalidad hasta que ingrese las credenciales correctas, estas son:
Usuario: admin
Contraseña: 12345
Así mismo, usted puede cambiar las credenciales desde el código del formulario.
'Validación de la credenciales correctas
If Trim (txtUser.Text) = "admin" And Trim (textContra.Text) = "12345" Then
MsgBox ("Acceso correcto"), vbInformation, "Ok"
Application.Visible = True 'Esta línea de código permite mostrar el libro excel
End
Else
MsgBox ("Las credenciales ingresadas son incorrectas, intente de nuevo"), vbExclamation, "Alerta"
End if
End sub
La sintaxis empieza declarando las variables a usar y asignándoles un valor a cada una, en este caso serán User y contraseña.
Dim user, contraseña As String
user = txtUser.Text
contraseña = txtContra.Text
Luego, se tendrá que validar que los campos de las credenciales este completo, luego se vera la validación de ellas.
'Comprobar que el usuario ingrese las credenciales
If Trim(txtUser) = "" Then ' Trim sirve para descartar saltos vacíos en el campo Usuario
MsgBox "Ingrese Usuario, intente de nuevo", vbExclamation, "Alerta" 'Mensaje de alerta indicando que el campo debe ser llenado
txtUser.SetFocus 'Ubica el curso en el campo Usuario
Exit Sub
End If
If Trim(txtContra) = "" Then ' Trim sirve para descartar saltos vacíos en el campo Contraseña
MsgBox "Ingrese Contraseña", vbExclamation, "Alerta" 'Mensaje de alerta indicando que el campo debe ser llenado
txtContra.SetFocus 'Ubica el curso en el campo Contraseña
Exit Sub
End If
Después viene la validación de la credencial correcta.
'Validación de las credenciales correctas
If Trim(txtUser.Text) = "admin" And Trim(txtContra.Text) = "12345" Then
MsgBox ("Acceso correcto"), vbInformation, "Ok"
Application.Visible = True 'Esta línea de código permite mostrar el libro Excel luego de ingresar las credenciales correctas
End
Else
MsgBox ("Las credenciales ingresadas son incorrectas, intente de nuevo"), vbExclamation, "Alerta"
End If
End Sub
Todo lo de arriba conlleva la programación del botón INGRESAR, ahora para el botón cancelar simplemente colocamos lo siguiente:
Private Sub btnCan_Click()
Unload.me 'Cierra el formulario en su totalidad.
End Sub
Finalmente, para que el libro de Excel nos pida las credenciales al inicio se tiene que colocar el siguiente código en ThisWorkbook:
Private Sub Workbook_Open()
Application.Visible = False 'No permite que el libro se muestre al abrirlo
UserForm1.Show 'Muestra el formulario de login como primera ventana
End Sub
Bonus:
Adicionalmente se cambio la manera en la que se muestra los caracteres en el campo CONTRASEÑA, esto se hizo mediante la herramienta PROPIEDADES (Se coloco el carácter *).
03/09/2019 a las 8:36 am
Amigo muy bueno el login pero tengo una duda.
Yo tengo un programa para un Punto de Venta. con un login artificial, Este si yo quiero coloco los datos para simular sino igualmente abre. Luego de eso me abre un menú donde muestro que deseo hacer. Si quiero abrir el visual basic, ver los reportes, ver las hojas de Excel, y ver el Punto de venta...
Cuando configuro tu login o cualquier otro login este Menú de Opciones desaparece y abre las hojas de excel directamente.
El login que deseo es para eso, que abra el menu de opciones para que el negocio empiece a trabajar, pero que las hojas de excel no las toque nadie a no ser el que tenga la clave de ese excel.
28/11/2019 a las 5:58 pm
eres grandioso explicas mejor que mi profesor jajajajaja gracias para hacerlo mas interactivo te recomiendo mas imagenes
02/02/2020 a las 5:01 pm
me ha gustado, recomiendo que se desarrolla un ejemplo completo paso a paso
09/03/2020 a las 1:14 pm
Buen dia
Para poner mas de 1 usuario y contrasena como se podria hacer eso.
De antemano muchas gracias.
21/05/2020 a las 7:26 pm
Muy bueno !! Gracias por compartirlo. Saludos
10/08/2020 a las 6:08 pm
como agregar un formulario dentro de otro formulario
loing dentro de el formulario
28/01/2021 a las 4:24 pm
¿Cómo se haría si quiero que sea la primera vez que entre a crear el usuario y la contraseña y que valide que la contraseña sea segura, es decir, que tenga varias condiciones como son mayúscula, minúscula, números, caracteres especiales y mínima longitud?
02/02/2021 a las 6:41 pm
Hola!!!!, como haría para el caso de ser varios usuarios con sus respectivas contraseñas. Estoy intentado hacerlo con el archivo descargado pero no lo consigo. Gracias
02/06/2021 a las 11:59 am
Pues podrías crear una tabla con su respectivo nombre de usuario y contraseña,
y crear una macro donde vaya a comparar el nombre de usuario y contraseña, si están correcta que le pase a usar el archivo, de lo contrario que no pase de ahí...
con la opción de crear un nuevo usuario y clave.
23/04/2021 a las 11:24 am
alguien que ayude porfa se lo agradecería tengo el lo diferente pero con la misma temática del tema relacionado quiero que cuando el usuario y la clave sean correctas se cierre el userfrom1 con unloand me pero no se donde insertarlo para que la macro pueda correr perfectamente
Private Sub Ingresar_Click()
With UserForm1
Nom_Usuario = ("leonardo")
clave = ("unicasa")
If (TextBox2.Value) = Nom_Usuario Then
Else
MsgBox ("Usuario Incorrecto"), vbExclamation, "Proceso Detenido"
'Borramos el contenido del userform
TextBox2.Value = Empty
End If
If (TextBox1.Value) = clave Then
Else
MsgBox ("La Clave Introducida Es Incorrecta"), vbExclamation, "Proceso Detenido"
'Borramos el contenido del userform
End If
TextBox1.Value = Empty
End With
End Sub
02/06/2021 a las 11:56 am
if me.Nom = "leonardo" or me.clave = "unicasa" then
msgbox "Bienvenido",vbexclamation,"Leonardo Manuel"
unload me
else
MsgBox ("Usuario y Clave Incorrecta"), vbExclamation, "Proceso Detenido"
end if
02/06/2021 a las 11:55 am
Puedes usar lo siguiente Leonardo Manuel:
if me.Nom = "leonardo" or me.clave = "unicasa" then
msgbox "Bienvenido",vbexclamation,"Leonardo Manuel"
unload me
else
MsgBox ("Usuario y Clave Incorrecta"), vbExclamation, "Proceso Detenido"
end if
17/08/2022 a las 7:57 am
¡Hola!, muchas gracias por tu valioso aporte, en realidad me ha sido de mucha ayuda, tengo una pregunta, una vez se aplica el código a la hoja de trabajo de excel ya cuando el "usuario" intenta ingresar y sale el formulario del usuario, si el usuario le da al botón cerrar directamente lo manda a una pestaña de VBA ¿Cómo se puede corregir esto para que si el usuario le da al botón cerrar desde el formulario, el archivo en excel simplemente no abra y no se ejecute en segundo plano?
13/09/2022 a las 2:56 pm
Como puedo agregar mas de un usuario?