Mensaje saludo personalizado -Macro

Por

Vamos a personalizar ahora un poco más nuestros libros de trabajo con la combinación de un código que nos permite identificar el usuario del usuario para ajustar el idioma del saludo al usuario. Supongamos un escenario donde trabajemos para una empresa multinacional con sedes en USA, Colombia, Chile y Perú; sería apropiado que si el archivo lo abre una persona en USA el mensaje de saludo que hace el archivo sea en Ingles y si se abre en los demás países, el mensaje sea en español.

Lo primero que vamos a hacer es ingresar al Editor de Visual Basic y para ello desde la primera hoja utilizaremos la combinación de teclas Alt + F11:

Nos ubicamos en la ventana del Explorador de Proyectos que tenemos en el panel izquierdo de la ventana del Editor de Visual Basic y damos doble clic sobre el Objeto ThisWorkbook

Private Sub Workbook_Open()

On Error Resume Next

Usuario = Environ("USERNAME")

Hora = (Now - Int(Now)) * 24

Idioma = Application.International(xlCountryCode)

 

If Idioma = 1 Then

Select Case Hora

Case 6 To 12

MsgBox "Good Morning " & Usuario

Case 12 To 18

MsgBox "Good Afternoon " & Usuario

Case Else

MsgBox "Good Evening " & Usuario

End Select

Else

Select Case Hora

Case 6 To 12

MsgBox "Buenos Dias " & Usuario

Case 12 To 18

MsgBox "Buenas Tardes " & Usuario

Case Else

MsgBox "Buenas Noches " & Usuario

End Select

End If

 

End Sub

La primea línea marca el principio de la macro y se interpreta como macro que se ejecutará al momento de abrirse el libro de trabajo.

La segunda línea On Error Resume Next, es el código con el cual se hace el manejo de los errores que se puedan presentar en la ejecución de la macro para que en caso de que se presente un error, la macro no se detenga abruptamente si no que se detenga su ejecución sin afectar la operación del libro de trabajo.

En la tercera línea estamos haciendo uso de una variable llamada “Usuario” en la cual estamos almacenando el nombre del Usuario del computador donde se está abriendo el archivo; esto lo logramos con el uso de la propiedad Environ, la cual nos permite obtener varias características del computador donde se esté trabajando y para obtener el nombre de usuario se usa colocando entre paréntesis y comillas el código “USERNAME”

La cuarta línea corresponde a una conversión que se hace de la hora en la que se abre el archivo para almacenarla en una variable que llamamos “Hora”; la conversión se trata de dejar la hora en formato de 24 horas en número (incluido decimales) para poder aplicar el resto de la macro.

La quinta es la línea de código nueva donde estamos almacenando en la variable “Idioma”, el código con el que se asocia la marcación telefónica de cada país donde, USA es 1; por tanto en caso de que el resultado que se almacene en esta variable (que lo obtenemos con la propiedad International(xlCountryCode)), sea 1, el saludo debe ser en idioma inglés.

Las demás líneas que siguen, se usan para hacer una clasificación del valor que tenga la variable “Hora” donde, según ésta, se dará un mensaje (MsgBox) de saludo en inglés o en español según el valor de la variable Idioma

Al final del mensaje siempre se concatena con la información que hay en la variable Usuario

La última línea marca el final de la macro con la instrucción End Sub

Probemos abriendo el archivo en un computador con idioma español:

Y con un equipo con idioma Ingles:

Descargar archivo de trabajo.

Ahora si vamos a utilizar los códigos que ya aprendimos sobre obtener información de la computadora para implementar un sistema de autenticación mediante la aplicación de la propiedad Environ(“USERNAME”). La idea es que al momento de abrirse el archivo Excel, podamos comparar el nombre de usuario de la computadora que intenta abrir el archivo con un usuario que tengamos definido como el único que puede abrir el archivo; esto es muy útil por ejemplo si deseamos que un archivo que se encuentra en una red por ejemplo empresarial, solo pueda ser abierto por mi usuario y el de nadie mas.

Lo primero que vamos a hacer es ingresar al Editor de Visual Basic y para ello desde la primera hoja utilizaremos la combinación de teclas Alt + F11:

Nos ubicamos en la ventana del Explorador de Proyectos que tenemos en el panel izquierdo de la ventana del Editor de Visual Basic y damos doble clic sobre el Objeto ThisWorkbook

Private Sub Workbook_Open()

On Error Resume Next

Usuario = Environ("USERNAME")

If Usuario <> "MiUsuario" Then

MsgBox "No estas autorizado para abrir este Libro"

ActiveWorkbook.Close

Exit Sub

End If

End Sub

La primea línea marca el principio de la macro y vamos a desglosar esta línea para entender un poco mejor esta macro:

Private Sub: significa Subrutina (Sub) o macro de acceso Privado (Private) y este acceso se aplica cuando se intenta ejecutar desde otra macro.

Workbook: Corresponde a la indicación de que la macro se aplicará sobre el libro de Excel que en ingles se denomina Workbook.

Open: Corresponde al evento Abrir, es decir, cuando se abra el libro de trabajo se van a ejecutar unas líneas de código.

En resumen, esta primera línea se interpreta como macro que se ejecutará al momento de abrirse el libro de trabajo.

La segunda línea On Error Resume Next, es el código con el cual se hace el manejo de los errores que se puedan presentar en la ejecución de la macro para que en caso de que se presente un error, la macro no se detenga abruptamente si no que se detenga su ejecución sin afectar la operación del libro de trabajo.

En la tercera línea estamos haciendo uso de una variable llamada “Usuario” en la cual estamos almacenando el nombre del Usuario del computador donde se está abriendo el archivo; esto lo logramos con el uso de la propiedad Environ, la cual nos permite obtener varias características del computador donde se esté trabajando y para obtener el nombre de usuario se usa colocando entre paréntesis y comillas el código “USERNAME”

En la cuarta línea estamos realizando una validación IF donde preguntamos Si, el nombre de usuario que almacenamos previamente en la variable Usuario es Diferente a “MiUsuario” (acá es donde debes colocar tu usuario) entonces pase a las siguientes líneas 5 y 6 donde:

  • Línea 5: Se informa mediante un mensaje que el usuario que esta intentando abrir el archivo no tiene permisos para ello
  • Línea 6: ActiveWorkbook.Close lo que hace es cerrar el libro de trabajo para que no se pueda trabajar en este.
  • Línea 7: Exit Sub lo que hace es terminar de ejecutar la macro

La última línea marca el final de la macro con la instrucción End Sub

Prueben aplicando este código y recuerden reemplazar en la línea 4 en la instrucción IF donde dice “MiUsuario” por el usuario de sus máquinas para poder abrir el archivo solo por ustedes.

Descargar archivo de trabajo.

Temas relacionados

Gerencie.com en su correo.

Suscríbase y nosotros colocaremos en su bandeja de entrada la mejor información que generamos diariamente.


Déjenos su opinión

En Gerencie.com está permitido opinar, criticar, discutir, controvertir, disentir, etc., pero debe hacerlo con respeto, sin insultar y sin ofender a otros.

Información legal aplicable para Colombia.

¿Preocupado por su pensión? Manténgase Informado.