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.
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.
13 comentarios:
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.
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!!
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
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
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
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...
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
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
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
Amigo que tal Buenas tardes mira hice todo pero cuando doy ingresar no me manda a las hojas a que se puede deber
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
Hola, puedo utilizar los datos de usuario de Windows? quiero que ingresen utilizando los datos de windows. gracias.
Hola Walter, cómo estas! Utilizando usuarios de windows no directamente pero se puede hacer utilizando los mismos nombres de usuario y la constraseña la define el administrador de la aplicación.
Sds
Publicar un comentario