En la mayoría de las veces cuando una persona ingresa por primera vez a una empresa, a ésta se le otorga una cuenta de usuario para acceder a los sistemas informáticos propiedad de dicha empresa.
La cuenta de usuario esta formada por un nombre de usuario y una contraseña, así que a través del presente tutorial vamos a realizar una simulación de autenticación para que el usuario pueda acceder a los programas propiedad de la empresa empleando Excel 2013.
La simulación va a consistir en que si el usuario es el propietario de dicha cuenta, entonces tendrá el derecho de usar el programa que resuelve ecuaciones cuadráticas, así que iniciamos sin más preámbulo.
Crea la siguiente "interface de usuario" en las celdas que se indican (se trata de texto, y un botón que permitirá validar los datos del usuario):
Observa bien, el logotipo del IPN se incorporo con la opción "Imágenes" del comando "Ilustraciones" de la ficha "Insertar". El texto "Instituto Poli...." se incorporo mediante la opción "WordArt" del comando "Texto" de la ficha "Insertar" con relleno de texto: "Rojo oscuro", con un tamaño de letra de 24 puntos y tipo de letra "Century Gothic" (la pantalla que mostré previamente tiene un Zoom de 170%).
Los textos "Pantalla de...", "Usuario:" y "Contraseña:" tienen tipo de letra "Century Gothic", tamaño de 11 puntos. A las celdas D6 y D8 les colocamos un borde de cuadro grueso.
El botón "Validar usuario" lo incorporaremos mediante la opción "Botón de comando (control ActiveX)", primer ícono de la 3a. fila de iconos, del grupo "Controles" de la cinta "Desarrollador" (en caso de que la tengas deshabilitada, recurre a la opción "Opciones" del menú "Archivo" y
elige la opción "Personalizar cinta de opciones" y finalmente del panel de la derecha habilita la cinta "Desarrollador", paloméala!!! y listo).
Trazamos el botón (como si estuviéramos en Paint) y tendrá el siguiente aspecto:
precisamente en la propiedad "Caption" es donde cambiamos el texto, y el Font (tipo de letra) elegimos "Century Gothic", con tamaño de 8 puntos.
Ahora, programaremos al botón, es decir asociaremos programación de VBA a este botón, para ello simplemente damos doble clic al botón (o también oprimir Alt+F11) y aparecerá la ventana principal del ámbito de programación de VBA, tal como la que se observa enseguida:
Como estarás observando, en la barra de título nos indica Código correspondiente a la Hoja1 y la segunda flecha roja nos indica el símbolo cursor el cual nos indica donde introducir el código correspondiente a la programación que deseamos, así que teclea precisamente en ese lugar el siguiente código de programación de VBA (Visual Basic Application):
Private Sub CommandButton1_Click()
CommandButton1.Width = 106.5
CommandButton1.Height = 24
CommandButton1.Font.Size = 8
If Range("D6").Value = "carlos" Then
If Range("D8").Value = "gengiskhan" Then
Hoja2.Visible = xlSheetVisible
CommandButton1.Enabled = False
MsgBox ("Usuario registrado, puedes usar la siguiente hoja")
Else
MsgBox ("contraseña invalida, intenta de nuevo!!!")
End If
Else
MsgBox ("usuario no registrado, intenta de nuevo!!!")
End If
End Sub
Te explicare el código anterior.
(1) La instrucción "Private Sub CommandButton1_Click() es la cabecera de una subrutina (programa que realiza algunas acciones) que se ejecuta precisamente cuando se hace clic al botón "CommandButton1" (botón de Validar usuario)
(2) Las instrucciones: CommandButton1.Width = 106.5
CommandButton1.Height = 24
CommandButton1.Font.Size = 8
definen características del botón, ancho (width) de 106.5 puntos, altura (height) de 24 puntos y tamaño de letra (Font.Size) de 8.
(3) Las instrucción
If Range("D6").Value = "carlos" Then
:
: (acciones a ejecutarse cuando es verdadero)
:
Else
:
: (acciones a ejecutarse cuando es falso)
:
End If
Nos permite validar el contenido de la celda D6 (la expresión Range("D6").value permite acceder al contenido de la celda especificada), si contiene el nombre de usuario "carlos", si es así entonces la expresión lógica es verdadera, por lo que se ejecutan las acciones delimitadas por las palabras Then (significa "entonces") y Else (significa "de otro manera"). En caso de que la expresión lógica sea falsa, se ejecutarán las acciones delimitadas por las palabras "Else" y "End If" (significa "Fin del Si").
El segundo If lo empleamos dentro de las acciones cuando la expresión lógica del primer If es verdadera, claro esta, si el nombre de usuario es correcto entonces procedemos a validar la contraseña de lo contrario se envía un mensaje "usuario no registrado, intenta de nuevo!!!", la instrucción "MsgBox" (Message Box significa Caja de texto) permite enviar un mensaje a la pantalla de la PC.
La 2a. instrucción If permite validar la contraseña en caso de que la expresión lógica sea verdadera (celda D8 contiene "gengiskhan") se le permite al usuario emplear el programa que resuelve ecuaciones cuadráticas de lo contrario envía el mensaje ""contraseña invalida, intenta de nuevo!!!".
Las siguientes instrucciones se ejecutarán siempre y cuando el nombre de usuario y la contraseña sean correctas:
Hoja2.Visible = xlSheetVisible
CommandButton1.Enabled = False
MsgBox ("Usuario registrado, puedes usar la siguiente hoja")
La instrucción "Hoja2.Visible = xlSheetVisible" permite habilitar la hoja numero 2, que es la que contiene el programa para resolver ecuaciones cuadráticas, es decir se hace visible para que el usuario pueda accederla.
La instrucción "CommandButton1.Enabled = False", permite deshabilitar el botón "Validar usuario", es decir ya no lo podrá usar el usuario.
La instrucción "MsgBox ("Usuario....." envía un mensaje a la pantalla de la PC.
El código introducido deberá mostrarse como sigue:
Ahora, regresamos al ambiente de Excel empleando la opción "Cerrar y volver a Microsoft Excel" del menú "Archivo".
Programa para resolver ecuaciones cuadráticas.
Ahora añadimos una Hoja nueva (hacer clic en el pequeño botón circular "+", se encuentra en la parte inferior, exactamente a un lado del rótulo Hoja1), es decir crearemos la Hoja2, y tecleamos la siguiente información:
Observa, las celdas B5, D5 y F5 son los valores que se deberán de teclear para definir la ecuación cuadrática ha resolver.
El botón ya esta tratado y simplemente nos vamos al ambiente de programación, ya sea le des doble clic al botón u oprime las teclas Alt + F11, tecleamos el siguiente código, sólo asegúrate que en el panel de la izquierda efectivamente este seleccionada la Hoja2:
Cabe mencionar que la fórmula empleada trae consigo una raíz cuadrada, la cual no deberá tener una cantidad de subradical negativa, por lo que deberemos de validar esta cantidad, por ello se calcula la cantidad subradical:
subradical=(Range("D5").value)^2-4*Range("B5").value*Range("F5").value
y con la instrucción IF evaluamos si es negativa (subradical < 0), en caso de ser negativa se envía un mensaje a la pantalla de la PC indicando que la ecuación definida no tiene solución, de lo contrario se calculan las dos raíces reales (celdas I7 e I9),
Bien, casi estamos listos para probar la programación que hemos definido, sin embargo en el código de autenticación del usuario se emplearon las instrucciones:
Hoja2.Visible = xlSheetVisible (hace visible la Hoja2)
CommandButton1.Enabled = False (deshabilita el botón)
la 1a. permite hacer visible la Hoja2 al usuario, y la 2a. deshabilita el botón "Validar usuario", por ello necesitamos realizar las dos instrucciones que se contraponen a estas dos, es decir:
Hoja2.Visible = xlSheetHidden (oculta la Hoja2)
CommandButton1.Enabled = True (habilita el botón)
Estas instrucciones deberán de ejecutarse antes de la programación que hemos definido, para ello empleamos la subrutina Workbook_Open(), esta subrutina ejecuta su contenido cuando abrimos el archivo Excel automáticamente. Para definir esta subrutina debemos de estar en el ámbito de programación y en el panel de la izquierda debe de aparecer el texto: ThisWorkBook, el cual deberás de seleccionarlo y en el panel de la derecha del menú (General) elige la única opción que hay: Workbook, tal como aparece enseguida:
en automático deberá de aparecer el siguiente código (cuerpo de la subrutina):
y dentro de ésta subrutina tecleamos las instrucciones que se comentaron anteriormente, y además las instrucciones que nos permitirán inicializar los datos que manipularemos en ambos programas, mostrándose como sigue:
y aprovechamos de estar aquí para dar de alta otra subrutina, la cual nos permitirá deshabilitar el ícono "+" de "Hoja nueva", es decir evitar que el usuario añada hojas nuevas. Elige del menú superior izquierdo (Open) la opción NewSheet, tal como se muestra enseguida:
y en automático aparecerá el "cuerpo" de esta subrutina, en la cuál teclea el siguiente código:
Application.DisplayAlerts = False
ActiveSheet.Delete
MsgBox "Lo siento, la opción <<Añadir hojas nuevas>> no está permitida"
la instrucción "MsgBox "Lo siento, ...." deberá de estar en un sólo renglón, debiéndose mostrar como sigue:
Ahora si, ya estamos listos para probar la programación, pero antes que todo debemos de salvar nuestro archivo, recuerda Excel le asigna a los archivos una terminación de "xlsx", sin embargo por el hecho de haber utilizado el lenguaje Visual Basic Application debemos de salvar el archivo de una forma muy particular y esta es "Libro de Excel habilitado para macros (*.xlsm)", opción que deberás de elegir en el menú de la caja de texto de "Tipo:" al momento de salvar el archivo, tal como se muestra enseguida:
Al teclear el nombre del archivo, no necesitas teclear la extensión o terminación (xlsm), Excel la asigna en automático (siempre y cuando hayas elegido la opción mostrada arriba).
Como acción final, haz doble clic sobre el texto "Hoja1" (parte inferior izquierda) que es el nombre de la hoja y reemplazalo por "Autenticación" y a la Hoja2 reemplaza su texto por: "Ec Cuadrática", tal como se muestra enseguida:
Después de este cambio salvamos el archivo y nos salimos de Excel.
Al volver a abrir este mismo archivo (autenticacionEcCuadratica.xlsm), aparecerá un botón rectangular que indica: "Habilitar contenido" el cuál deberemos de oprimir antes de cualquier cosa, ¿ok?, tal como se muestra enseguida:
y asegúrate de estar en la hoja "Autenticación".
La hoja Autenticación deberá mostrarse como sigue:
Observa bien, no aparece la hoja "Ec Cuadrática", éste sera visible siempre y cuando el usuario y la contraseña sean correctas. Procedemos a introducir el usuario correcto y la contraseñas inválida:
ahora, usuario y contraseña correctos:
Como estarás observando, al introducir el usuario y la contraseña correctos suceden dos cosas: (1) Aparece la hoja "Ec Cuadratica" (para ser accesada) y (2) El botón "Validar usuario" queda deshabilitado (queda inutilizado).
Entonces nos vamos a la hoja "Ec Cuadratica", e introducimos los valores 1, 8 y 15, en las celdas B5, D5, y F5 respectivamente y haz clic en el botón "Resolver ecuación" y se obtendrá:
Ahora introducimos: 3, 5, y 6 en las celdas correspondientes y obtenemos:
Observa bien, con los valores especificados la ecuación carece de solución, y además las celdas de X1 y X2 quedan vacías.
Hemos terminado, sin embargo vale la pena decirte que el código de programación que hemos incorporado en nuestro archivo de Excel (autenticacionEcCuadratica.xlsm) podemos ocultarlo para que nadie se lo fusile o simplemente no queremos que vean nuestro código, por ello hacemos clic derecho sobre el texto "Microsoft Excel Objetos" en el ambiente de programación de VBA, y elegimos la opción: "Propiedades de VBAProject..." tal como se muestra enseguida:
debiendo aparecer la siguiente ventana:
y en la pestaña "Protección", habilita la opción: "Bloquear proyecto para visualización", e introduce una contraseña y la confirmas, y al final oprime el botón "Aceptar" y enseguida guarda el archivo y salte de Excel, y vuelve a entrar a Excel, y enseguida verifica si efectivamente Excel nos oculto el código.
Esto ha sido todo por el momento, espero que todo este menjurje les sea de utilidad, hasta la próxima...
Ahora, procedemos a cambiar algunas características de este botón, primero cambiamos el texto que esta mostrando por el siguiente texto: "Validar usuario", mediante el comando "Propiedades" del grupo "Controles" de la cinta "Desarrollador", tal como se muestra enseguida:
Ahora, programaremos al botón, es decir asociaremos programación de VBA a este botón, para ello simplemente damos doble clic al botón (o también oprimir Alt+F11) y aparecerá la ventana principal del ámbito de programación de VBA, tal como la que se observa enseguida:
Como estarás observando, en la barra de título nos indica Código correspondiente a la Hoja1 y la segunda flecha roja nos indica el símbolo cursor el cual nos indica donde introducir el código correspondiente a la programación que deseamos, así que teclea precisamente en ese lugar el siguiente código de programación de VBA (Visual Basic Application):
Private Sub CommandButton1_Click()
CommandButton1.Width = 106.5
CommandButton1.Height = 24
CommandButton1.Font.Size = 8
If Range("D6").Value = "carlos" Then
If Range("D8").Value = "gengiskhan" Then
Hoja2.Visible = xlSheetVisible
CommandButton1.Enabled = False
MsgBox ("Usuario registrado, puedes usar la siguiente hoja")
Else
MsgBox ("contraseña invalida, intenta de nuevo!!!")
End If
Else
MsgBox ("usuario no registrado, intenta de nuevo!!!")
End If
End Sub
Te explicare el código anterior.
(1) La instrucción "Private Sub CommandButton1_Click() es la cabecera de una subrutina (programa que realiza algunas acciones) que se ejecuta precisamente cuando se hace clic al botón "CommandButton1" (botón de Validar usuario)
(2) Las instrucciones: CommandButton1.Width = 106.5
CommandButton1.Height = 24
CommandButton1.Font.Size = 8
definen características del botón, ancho (width) de 106.5 puntos, altura (height) de 24 puntos y tamaño de letra (Font.Size) de 8.
(3) Las instrucción
If Range("D6").Value = "carlos" Then
:
: (acciones a ejecutarse cuando es verdadero)
:
Else
:
: (acciones a ejecutarse cuando es falso)
:
End If
Nos permite validar el contenido de la celda D6 (la expresión Range("D6").value permite acceder al contenido de la celda especificada), si contiene el nombre de usuario "carlos", si es así entonces la expresión lógica es verdadera, por lo que se ejecutan las acciones delimitadas por las palabras Then (significa "entonces") y Else (significa "de otro manera"). En caso de que la expresión lógica sea falsa, se ejecutarán las acciones delimitadas por las palabras "Else" y "End If" (significa "Fin del Si").
El segundo If lo empleamos dentro de las acciones cuando la expresión lógica del primer If es verdadera, claro esta, si el nombre de usuario es correcto entonces procedemos a validar la contraseña de lo contrario se envía un mensaje "usuario no registrado, intenta de nuevo!!!", la instrucción "MsgBox" (Message Box significa Caja de texto) permite enviar un mensaje a la pantalla de la PC.
La 2a. instrucción If permite validar la contraseña en caso de que la expresión lógica sea verdadera (celda D8 contiene "gengiskhan") se le permite al usuario emplear el programa que resuelve ecuaciones cuadráticas de lo contrario envía el mensaje ""contraseña invalida, intenta de nuevo!!!".
Las siguientes instrucciones se ejecutarán siempre y cuando el nombre de usuario y la contraseña sean correctas:
Hoja2.Visible = xlSheetVisible
CommandButton1.Enabled = False
MsgBox ("Usuario registrado, puedes usar la siguiente hoja")
La instrucción "Hoja2.Visible = xlSheetVisible" permite habilitar la hoja numero 2, que es la que contiene el programa para resolver ecuaciones cuadráticas, es decir se hace visible para que el usuario pueda accederla.
La instrucción "CommandButton1.Enabled = False", permite deshabilitar el botón "Validar usuario", es decir ya no lo podrá usar el usuario.
La instrucción "MsgBox ("Usuario....." envía un mensaje a la pantalla de la PC.
El código introducido deberá mostrarse como sigue:
Ahora, regresamos al ambiente de Excel empleando la opción "Cerrar y volver a Microsoft Excel" del menú "Archivo".
Programa para resolver ecuaciones cuadráticas.
Ahora añadimos una Hoja nueva (hacer clic en el pequeño botón circular "+", se encuentra en la parte inferior, exactamente a un lado del rótulo Hoja1), es decir crearemos la Hoja2, y tecleamos la siguiente información:
Observa, las celdas B5, D5 y F5 son los valores que se deberán de teclear para definir la ecuación cuadrática ha resolver.
El botón ya esta tratado y simplemente nos vamos al ambiente de programación, ya sea le des doble clic al botón u oprime las teclas Alt + F11, tecleamos el siguiente código, sólo asegúrate que en el panel de la izquierda efectivamente este seleccionada la Hoja2:
subradical=(Range("D5").value)^2-4*Range("B5").value*Range("F5").value
y con la instrucción IF evaluamos si es negativa (subradical < 0), en caso de ser negativa se envía un mensaje a la pantalla de la PC indicando que la ecuación definida no tiene solución, de lo contrario se calculan las dos raíces reales (celdas I7 e I9),
Bien, casi estamos listos para probar la programación que hemos definido, sin embargo en el código de autenticación del usuario se emplearon las instrucciones:
Hoja2.Visible = xlSheetVisible (hace visible la Hoja2)
CommandButton1.Enabled = False (deshabilita el botón)
la 1a. permite hacer visible la Hoja2 al usuario, y la 2a. deshabilita el botón "Validar usuario", por ello necesitamos realizar las dos instrucciones que se contraponen a estas dos, es decir:
Hoja2.Visible = xlSheetHidden (oculta la Hoja2)
CommandButton1.Enabled = True (habilita el botón)
Estas instrucciones deberán de ejecutarse antes de la programación que hemos definido, para ello empleamos la subrutina Workbook_Open(), esta subrutina ejecuta su contenido cuando abrimos el archivo Excel automáticamente. Para definir esta subrutina debemos de estar en el ámbito de programación y en el panel de la izquierda debe de aparecer el texto: ThisWorkBook, el cual deberás de seleccionarlo y en el panel de la derecha del menú (General) elige la única opción que hay: Workbook, tal como aparece enseguida:
en automático deberá de aparecer el siguiente código (cuerpo de la subrutina):
y dentro de ésta subrutina tecleamos las instrucciones que se comentaron anteriormente, y además las instrucciones que nos permitirán inicializar los datos que manipularemos en ambos programas, mostrándose como sigue:
y aprovechamos de estar aquí para dar de alta otra subrutina, la cual nos permitirá deshabilitar el ícono "+" de "Hoja nueva", es decir evitar que el usuario añada hojas nuevas. Elige del menú superior izquierdo (Open) la opción NewSheet, tal como se muestra enseguida:
y en automático aparecerá el "cuerpo" de esta subrutina, en la cuál teclea el siguiente código:
Application.DisplayAlerts = False
ActiveSheet.Delete
MsgBox "Lo siento, la opción <<Añadir hojas nuevas>> no está permitida"
la instrucción "MsgBox "Lo siento, ...." deberá de estar en un sólo renglón, debiéndose mostrar como sigue:
Ahora si, ya estamos listos para probar la programación, pero antes que todo debemos de salvar nuestro archivo, recuerda Excel le asigna a los archivos una terminación de "xlsx", sin embargo por el hecho de haber utilizado el lenguaje Visual Basic Application debemos de salvar el archivo de una forma muy particular y esta es "Libro de Excel habilitado para macros (*.xlsm)", opción que deberás de elegir en el menú de la caja de texto de "Tipo:" al momento de salvar el archivo, tal como se muestra enseguida:
Al teclear el nombre del archivo, no necesitas teclear la extensión o terminación (xlsm), Excel la asigna en automático (siempre y cuando hayas elegido la opción mostrada arriba).
Como acción final, haz doble clic sobre el texto "Hoja1" (parte inferior izquierda) que es el nombre de la hoja y reemplazalo por "Autenticación" y a la Hoja2 reemplaza su texto por: "Ec Cuadrática", tal como se muestra enseguida:
Después de este cambio salvamos el archivo y nos salimos de Excel.
Al volver a abrir este mismo archivo (autenticacionEcCuadratica.xlsm), aparecerá un botón rectangular que indica: "Habilitar contenido" el cuál deberemos de oprimir antes de cualquier cosa, ¿ok?, tal como se muestra enseguida:
y asegúrate de estar en la hoja "Autenticación".
La hoja Autenticación deberá mostrarse como sigue:
Observa bien, no aparece la hoja "Ec Cuadrática", éste sera visible siempre y cuando el usuario y la contraseña sean correctas. Procedemos a introducir el usuario correcto y la contraseñas inválida:
ahora, usuario y contraseña correctos:
Como estarás observando, al introducir el usuario y la contraseña correctos suceden dos cosas: (1) Aparece la hoja "Ec Cuadratica" (para ser accesada) y (2) El botón "Validar usuario" queda deshabilitado (queda inutilizado).
Entonces nos vamos a la hoja "Ec Cuadratica", e introducimos los valores 1, 8 y 15, en las celdas B5, D5, y F5 respectivamente y haz clic en el botón "Resolver ecuación" y se obtendrá:
Ahora introducimos: 3, 5, y 6 en las celdas correspondientes y obtenemos:
Observa bien, con los valores especificados la ecuación carece de solución, y además las celdas de X1 y X2 quedan vacías.
Hemos terminado, sin embargo vale la pena decirte que el código de programación que hemos incorporado en nuestro archivo de Excel (autenticacionEcCuadratica.xlsm) podemos ocultarlo para que nadie se lo fusile o simplemente no queremos que vean nuestro código, por ello hacemos clic derecho sobre el texto "Microsoft Excel Objetos" en el ambiente de programación de VBA, y elegimos la opción: "Propiedades de VBAProject..." tal como se muestra enseguida:
debiendo aparecer la siguiente ventana:
y en la pestaña "Protección", habilita la opción: "Bloquear proyecto para visualización", e introduce una contraseña y la confirmas, y al final oprime el botón "Aceptar" y enseguida guarda el archivo y salte de Excel, y vuelve a entrar a Excel, y enseguida verifica si efectivamente Excel nos oculto el código.
Esto ha sido todo por el momento, espero que todo este menjurje les sea de utilidad, hasta la próxima...