Control de Acceso a Usuarios en Excel con Formulario

En este artículo, al igual que el anterior, vamos a ver cómo controlar los accesos de usuarios a nuestra mini aplicación. Esta vez utilizaremos un formulario de Windows (ActiveX) para poder hacer el ingreso. Básicamente el resto es lo mismo, la aplicación es la misma, los datos también, etc.


En un ejemplo, recuerden esto, hay muchas formas de hacerlo. Mostramos la que nos parece más sencilla de aplicar. Se puede complejizar tanto como se quiera.



Click en la imagen para verl el video o en este Link.

En nuestro ejemplo usamos un nombre de fantasía para nuestra aplicación, es algo que se nos ocurrió para el ejemplo.
Vamos a empezar a explicar los elementos generales:
En primer lugar tenemos lo que sería la página de inicio, dónde esta el formulario de logeo o donde uno ingresa el usuario y contraseña para ingresar al sistema. En este nuevo ejemplo tenemos un boton que llamamos “Ingresar”, al presionarlo nos lanza el formuario.


Como ven es un formulario sencillo con dos “textbox” para el ingreso de datos y un “commandbutton” para ingresar. Ingresamos manualmente el nombre del Usuario aunque se puede guardar una lista desplegable al igual que el artículo anterior pero para no complicar lo dejamos así. Por otro lado también se puede ingresar la contraseña donde elegimos un carácter para que represente el ingresado que puede ser un asterisco (*).


Una vez que presionamos el boton ingresar podemos lanzar un “msgbox” para que nos digas que introducimos mal el usuario y/o contraseña.
Ahora, para este ejemplo además de crear el formulario debemos hacer una pequeña modificación en la hoja usuario que habíamos creado.
En el formulario anterior utilizavamos una formular para comparar lo introducido en la celda con lo que teniamos en la hoja de usuarios. Aquí como vamos a utilizar el evento “Change” del textbox. Cuando ejecutamos un cambio sobre el textbox, este se verá reflejado directamente en la hoja, escrito en las celdas B4 y C4 respectivamente. Luego en la celda E4 se usa una formula de comparación para decirnos si los datos introducidos son correctos.



Una vez que ingresamos al sistema se veran las  hojas correspondientes al usuario de nuestra aplicación. Luego para salir al igual que la vez anterior deberíamos presionar “exit”.

.Procedimiento
En este caso, tenemos dos grandes elementos. El formulario propiamente dicho y el código. Veamos el formulario. No vamos a mostrar el paso a paso porque ya lo habiamos visto en otros artículos, sin embargo podemos nombras las variables asociadas.
Las variables serían tres:
·         Textbox1 (caja de texto  para el usuario)
·         Textbox2 (caja de texto para la contraseña)
·         CommandButton1 (botón de comando para ingresar)
Esto son los nombres que aparecerian en la variable “Name” de cada elemento. Luego el formato del formulario puede ser modificado a gusto, es decir, el color, el tamaño, etc.
Luego lo que hay que recordar es de cambiar la propiedad del textbox2 ,que sería donde se introduce la contraseña, para que muestre el carácter “*”. La propiedad se llama “PasswordChar”.

Código
La macro “Ingresar” es la misma pero le agregamos los mensajes de bienvenida o de error en caso que la contraseña o el usuario no sean correctos, lo marcado en ROJO:
INICIO CODIGOS----------------------------------------
Sub Ingresar()
'Autentico el Usuario y Contraseña
If Sheets("Usuarios").Range("E4").Value = "verdadero" Then
'msj de bienvenida
MsgBox "Bienvenido"
'eligo el caso
'la variable esta representada por lo el dato que tenemos en la hoja usuarios en la celda D4. Esta celda muestra el mismo dato de la celda usuario en la hoja de inicio.
Select Case Sheets("Usuarios").Range("D4").Value Case "Administrador"
'Administrador
‘el administrador puede ver todas las hojas por lo que hacemos visible todas las hojas. Para saber este codigo creamos una macro de prueba.
Sheets("Usuarios").Visible = True
Sheets("Nivel_Acceso").Visible = True
Sheets("BD1").Visible = True
Sheets("BD2").Visible = True
Sheets("Informe").Visible = True

Case "Standard"
'Standard
‘en este caso solo hacemos visible las tres hojas.
Sheets("BD1").Visible = True
Sheets("BD2").Visible = True
Sheets("Informe").Visible = True
Case "Invitado"
'Invitado
‘solo vemos la hoja de informe
Sheets("Informe").Visible = True
End Select
Else ‘agregamos el Else y el msj
 MsgBox "Usuario y/o constraseña incorrecto"
End If
End Sub
------------------------------------------------------
El código de “Exit” es exactamente el mismo por lo que no vamos a mostrarlo que el anterior.
Ahora vamos a ver el código para cada elemento del formulario, el cual sería:
-------------------------------
Private Sub CommandButton1_Click()
Call Ingresar ‘llama a la macro ingresar
End Sub
-------------------------------
Private Sub TextBox1_Change()
‘el cambio de los valores de la caja se ven reflejados en las celda correspondinete.
Sheets("Usuarios").Range("B4").Value = TextBox1.Value
End Sub
-------------------------------
Private Sub TextBox2_Change()
‘el cambio de los valores de la caja se ven reflejados en las celda correspondinete.
Sheets("Usuarios").Range("C4").Value = TextBox2.Value
End Sub
-------------------------------
Por otro lado hay que crear una nueva macro para lanzar el formulario:
Sub Ingreso_Form()
UserForm1.Show
End Sub
Como ven no es muy complicado y además es sencillo.
¡Esperamos que les haya gustado la idea y vean lo fácil que es!
-------------------------------------- FIN CÓDIGOS

Recuerden que los artículos algunas veces requieren un mayor o menor nivel de conocimiento en ciertos temas de Excel, por ejemplo formulas avanzadas, macros o VBA, etc. Sin embargo en los artículos se nombran todos los elementos y con esta información podemos hacer nuestras pequeñas investigaciones usando internet, así desarrollamos nuestro conocimiento. Por ejemplo si  utilizamos la función “Y”, que la suponemos conocida, y no sabemos ¿qué es? podemos buscar en internet para ver como se utiliza y cuáles son los componentes. Las mini aplicaciones no son más que la recopilación de muchos elementos para dar forma a una nueva idea.

Pueden descargar algunos ejemplos (plantillas/templates) de la zona de Descargas. Si tienen alguna duda o consulta pueden hacerlo a través del formulario de contacto.

Les recomendamos que sigan el blog por alguno de los medios, mail o por redes sociales, para recibir las actualizaciones y novedades.
¡Éxitos!

Keys:
·         Control de Acceso a Usuarios con formulario Activex.
·         Acceso con Usuario y Contraseña con formulario.
·         Cambiar Nivel de Acceso a usuarios en Excel.
·         Tipos de Acceso de Usuario en Excel.
·         Excel Access Control with username and password with form.

11 comentarios:

Daniel Castillo R dijo...

Hola, he hecho todo paso por paso como lo explica, pero por alguna razón no me funciona y de verdad me urge poder implementar este método en un libro del negocio, si pudiera ayudarme al menos con una plantilla estaría muy agradecido.

y felicidades por el blog tienen muchas cosas interesantes.

Desde ya muchas gracias.

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
En cuanto a tu consulta, hemos hechos dos artículos a propósito justamente porque de acuerdo al conocimiento de Excel que posea cada persona puede usar uno u otro, sino tienes conocimientos de formularios te recomendaríamos utilices el otro artículo. El código es bastante simple. Por otro lado tenemos pendiente el video para estos artículos, probablemente con el video se despejaran todas tus dudas. Te pedimos paciencia ya que no hemos tenido tiempo. Esperamos tus comentarios. Saludos!!

Jose Torres dijo...

Hola que tal, he realizado lo necesario pero al ingresar la primera letra en el Usuario (TextBox1) me arroja mensaje de error 424 requiere un objeto, ya le busque que puede ser pero no encuentro que puede provocar el error si es posible me pudieran apoyar.

Su blog esta fantástico se aprende bastante.

Saludos

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
Revisa el proceso lógico, olvídate del código y revisa el concepto que utiliza cada parte. Seguramente encontrarás el error.
Esperamos tus comentarios.
Saludos

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, este sistema hace eso también. Solo tienes que señalar con la macro en que hoja quieres que termine. Si lo pruebas grabando una macro cualquiera y vez el código ya esta.
Esperamos tus comentarios.
Slaudos

you2dream dijo...

Buenas noches amigo, gracias por el esfuerzo en este tutorial, pero no hay manera en poner a funcionar las macros.... deberpia ser mucho mejor para lo que entendemos si huvieses colgado el archivo, para así poder ver como es que realmente funciona y ver dónde están nuestros errores. :( ta casi me doy por vencido...

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
Lo primero es, NO TE DES POR VENCIDO!
Luego te comentamos que hacemos cada artículo lo más completo posible, incluso dejamos el código de ejemplo pero la verdad es que la comprensión de todo depende de la complejidad y del conocimiento de excel de cada uno. Por suerte dejamos todas las pistas para poder seguir el "hilo" por decirlo así. Por ejemplo sobre este artículo hay un artículo anterior que lo hacemos sin formulario emergente. Y por otro lado tenemos otro artículo donde mostramos cómo crear un formulario. Es decir, que en cada ejemplo utilizamos cosas que ya habíamos utilizado antes y a la vez nos sirve para mostrar algo nuevo.
Esperamos tus comentarios.
Saludos

Sheldinni dijo...

Hola Juan Pablo, desde ya gracias por el articulo, ha sido muy instructivo.

He tomado la idea de la autenticación de usuarios para un archivo de Excel, y tras algunos topes de cabeza, he logrado lo que dice el articulo, segun los usuarios que tengo y que tipo de usuarios, visualice las paginas que tiene permitido, inclusó le agregue al botón de salir, para que al activarlo, guarde cambios y cierre el documento.

La razón por la cual te escribo es la siguiente, me topé que al momento de ingresar con un usuario que no este dado de alta en la hoja de usuarios, arroja un error y esto es debido a que la en la fórmula de busqueda en la hoja de usuarios donde hacemos la validación, al no encontrar el username, manda el error #N/A y con esto la validación marca el mismo error, por lo que la macro no es capaz de identificar que no un username que no esta registrado.

Alguna sugerencia de como solucionarlo?

Gracias

Saludos

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, seguramente es un error de concepto que probando lo podrás resolver. Sigue intentando, de otra manera te puedes comunicar con nosotros directamente mediante el formulario de contacto.
Saludos

juan guerrero vargas dijo...

Amigo que tal Buenas tardes mira hice todo pero cuando doy ingresar no me manda a las hojas a que se puede deber

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por tus comentarios!
En cuanto a tu consulta, revisa bien el código y lo que se supone que hace cada parte y solo llegarás a la solución del problema.
Saludos