GRABAR EL NOMBRE DE USUARIO DE WINDOWS CUANDO ABRIMOS Y CERRAMOS NUESTRO ARCHIVO EXCEL

Últimamente estoy recibiendo bastantes consultas, algunas son demasiado extensas como para realizar un ejemplo en un post, pero otras son perfectas para realizar un post.

La consulta que me enviaron ayer trata sobre la posibilidad de obtener el usuario de Windows con VBA y utilizarlo en una archivo compartido para identificar las personas que acceden (y también obtener la misma información en el momento que cierran en archivo).

Además aprovecho para agregar dos datos más a la información: la fecha y la hora.

En realidad son dos macros, una para la apertura y otra para el cierre. Para cuando abrimos el archivo, creo que lo que mejor se ajusta es grabar el código en ThisWorkbook  y utilizar el evento Open. La macro que debéis pegar es esta:

Private Sub Workbook_Open()
'Declaramos variables
Dim sNetwork As Object
Dim i As Integer, fin As Integer
'Obtenemos nombre del usuario del equipo
Set sNetwork = CreateObject("WScript.Network")
UserName = sNetwork.UserName
'Mostramos los datos en la Hoja1 al abrir el archivo
With Sheets("Hoja1")
fin = Application.CountA(Sheets("Hoja1").Range("A:A"))
For i = 2 To fin
If .Cells(i, 1) = "" Then
Final = i
Exit For
End If
Next
'Nombre de usuario
.Cells(i, 1) = UserName
'Fecha
.Cells(i, 2) = Date
'Hora
.Cells(i, 3) = Format(Time, "h:mm:ss")
'Indicamos que la acción es de apertura del archivo
.Cells(i, 4) = "ABRE ARCHIVO"
End With
'Liberamos variables
Set sNetwork = Nothing
End Sub

Con esta macro vamos a obtener la siguiente información:

GRABAR EL NOMBRE DE USUARIO DE WINDOWS CUANDO ABRIMOS Y CERRAMOS NUESTRO ARCHIVO EXCEL

Para grabar los datos con el cierre del archivo vamos a utilizar la siguiente macro:

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
'Declaramos variables
Dim sNetwork As Object
Dim i As Integer, fin As Integer
'Obtenemos nombre del usuario del equipo
Set sNetwork = CreateObject("WScript.Network")
UserName = sNetwork.UserName
'Mostramos los datos en la Hoja1 al cerrar el archivo
With Sheets("Hoja1")
fin = Application.CountA(Sheets("Hoja1").Range("A:A"))
For i = 2 To fin
If .Cells(i, 1) = "" Then
Final = i
Exit For
End If
Next
'Nombre de usuario
.Cells(i, 1) = UserName
'Fecha
.Cells(i, 2) = Date
'Hora
.Cells(i, 3) = Format(Time, "h:mm:ss")
'Indicamos que la acción es de apertura del archivo
.Cells(i, 4) = "CIERRA EXCEL"
End With
'Liberamos variables
Set sNetwork = Nothing
ActiveWorkbook.Save
End Sub

Aquí vamos a utilizar el evento Workbook_WindowDeactivate y además, guardaremos el archivo desactivando con ActiveWorkbook.Save, este es el resultado:

GRABAR EL NOMBRE DE USUARIO DE WINDOWS CUANDO ABRIMOS Y CERRAMOS NUESTRO ARCHIVO EXCEL1

Obviamente, si abrimos y cerramos varias  veces el archivo tendremos varios registros indicando nuestra actividad.

El archivo os lo dejo en blanco, de manera que cuando lo abráis aparecerán vuestros datos grabados en la Hoja1 del archivo. El archivo se puede cambiar a compartido si es necesario, las macros funcionarán perfectamente (probado en Excel 2010 y Excel 2016).

Espero que sea de vuestro interés 🙂

Descarga el archivo de ejemplo pulsando en: GRABAR EL NOMBRE DE USUARIO DE WINDOWS CUANDO ABRIMOS Y CERRAMOS NUESTRO ARCHIVO EXCEL

 

Anuncios

¿Te ha gustado?. Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s