En el ejemplo de hoy vamos a explicar como registrar los usuarios de un Excel. Esta herramienta nos va a permitir registrar el nombre del usuario además de la fecha y la hora en la que se abrió el archivo.
Cómo registrar usuarios de Excel que modifiquen un archivo
Para explicar como podemos registrar y proteger el nombre de los usuarios que modifican un archivo así como la fecha y la hora en que lo hacen hemos creado dos ejemplos. En el primer ejemplo vamos a explicar como registrar los datos y en el segundo ejemplo vamos a explicar como proteger la hoja para que esa información no pueda ser borrada por ningún usuario.
Ejemplo 1: Registar Usuarios, Fecha y Hora
Como ya hemos explicado en artículos anteriores, la ejecución de esta macro puede estar vinculada a la ocurrencia de un evento. El evento que hemos seleccionado en nuestro ejemplo es abrir el archivo. Es decir, cada vez que se abra el archivo se ejecutará la macro. Esta macro resgistrará en una lista el nombre del usuario y la fecha y hora en la que se abrió el archivo.
Obviamente esta información solo quedará guardada si el usuario que abre el archivo después lo vuelve a guardar. Si un usuario abre el archivo pero no lo guarda esa información no quedará registrada.
Para crear una macro vinculada a un evento que afecta a todo el archivo como es abrirlo (y no a un evento de una hoja en particular como es seleccionar una celda) tenemos que hacer lo siguiente:
- Primero vamos a abrir Editor de Visual Basic (VBE)
- En la ventana de la izquierda vamos a seleccionar “ThisWorkbook”
- En la pestaña desplegable superior izquierda vamos a seleccionar “Workbook”
- En la pestaña desplegable superior derecha vamos a seleccionar “Open”
El código de iniciación nos aparecerá automáticamente en la pantalla de código de VBE. Nuestro código completo se muestra a continuación:
Private Sub Workbook_Open() Dim i As Integer i = Worksheets("Sheet1").Cells(rows.count, 1).End(xlUp).Row + 1 Worksheets("Sheet1").Cells(i, 1) = Environ("Username") Worksheets("Sheet1").Cells(i, 2) = Date Worksheets("Sheet1").Cells(i, 3) = Time End Sub
En el código que se muestra arriba hemos definido una variable “i” a la que hemos asignado el número de la primera fila libre en la columna 1 ó “A”. Para encontrar la primer fila libre en la columna “A” hemos seleccionado la última fila en la columna “A” (el máximo número de filas es 1.048.576 para Excel 2010 y las versiones superiores pero no necesitamos saberlo porque podemos usar el truco de poner Rows.Count que devuelve el número que antes te decía). Una vez seleccionado la última fila le pedimos que vaya hacia arriba, End(xlUp), hasta la primera celda que encuentre ocupada. Este método funciona de manera similar a cuando pulsamos Ctrl +”una flecha de dirección” en un documento de Excel.
Una vez encontrada la última celda ocupada en la tabla le sumamos uno y obtenemos la primera celda libre. Después simplemente asignamos el nombre de usuario a la primera columna, la fecha a la segunda y la hora a la tercera.
Ejemplo 2: Registrar Usuarios de Excel y Proteger la Tabla
En este ejemplo vamos a explicar como proteger la tabla para que no se pueda modificar los usuarios que realicen cambios en el archivo y después lo guarden. La manera de hacer eso es crear la tabla en una hoja aparte. En nuestra hoja (ejemplo descargable al final del artículo) vamos a crear nuestra tabla con los encabezados en la primera fila y la vamos a proteger con la contraseña “123”.
El código de nuestra macro es igual al anterior pero con dos comandos añadidos. Uno al principio que desprotege la hoja y otro al final que la vuelve a proteger. El código es el siguiente:
Private Sub Workbook_Open() Dim i As Integer Worksheets("Sheet1").Unprotect ("123") i = Worksheets("Sheet1").Cells(rows.count, 1).End(xlUp).Row + 1 Worksheets("Sheet1").Cells(i, 1) = Environ("Username") Worksheets("Sheet1").Cells(i, 2) = Date Worksheets("Sheet1").Cells(i, 3) = Time Worksheets("Sheet1").Protect ("123") End Sub
Estos comandos son muy sencillos simplemente tenemos que escribir Protect ó Unprotect seguido de la contraseña entre paréntesis. Cómo es lógico cualquier persona que tenga un conocimiento medio de Excel podrá abrir VBE y ver la contraseña escrita en el código. Para evitar esto lo que tenemos que hacer es proteger el código también y así nadie podrá ver la contraseña escrita.
Para proteger una macro tenemos que ir a VBE >> Tools >> Propiedades de VBAProject. En la ventana que se nos abre hacemos click en Protección y activamos “Bloquear proyecto para visualización”. En los campos de abajo intoducimos la contraseña.
Esta protección sera efectiva una vez cerremos y volvamos a abrir el documento de Excel.
Cabe mencionar que el grado de protección que ofrecen la contraseñas en Excel son bajos y que una persona con unos conocimientos informáticos relativamente avanzados es probablemente capaz de saltarse estas contraseñas.
Bonus track: Descarga estos ejemplos
Ya se que estos ejemplos son muy golosos. Por eso te los dejo aquí para que te los puedas descargar y probar tú tranquilamente en tú ordenador.
[sociallocker]
Macro_para_registar_los_usuarios_de_un_Excel
[/sociallocker]