Contador de usuario

Tengo un encargo que me pidieron y solicita la ayuda de todos ustedes para
poder resolverla, es la siguiente:
Tengo un libro en excel que esta compartido en red, tengo que ejecutar una
macro que me lleve un contador de cuantas veces entra a ver el archivo cada
usuario por ejemplo en la celda de d4 tengo al usuario gamboa quiero que me
muestre en la celda e4 cuantas veces a entrado a ver el libro (cada vez que
entre que me aumente la cantidad en la celda e4), tengo un ejemplo que me
muestra en un Msgbox
Option Explicit
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA"
_
(ByVal lpBuffer As
String, _
nSize As Long) As
Long
Sub Nombre_de_usuario()
Dim lpBuff As String * 25
Dim ret As Long, UserName As String
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
MsgBox UserName
End Sub
Muchas gracias por su ayuda
Edgar

2 respuestas

Respuesta
1
Bueno creo que esto funcionará bien, o único es que para que no pregunte si desea habilitar macros hay dos opciones.
La primera es que todos los usuarios tengan la opción "nivel de seguridad bajo".
Y la segunda es crear un certificado de firma digital... y una vez los usuarios lo acepten (diciendo que siempre confiarán en esa firma) no preguntará y te funcionará perfecto.
Bueno después de eso debo aclarar que este procedimiento debe ir en la hoja de código llamada "ThisWoorkbook" del libro en el que deseas llevar el control.
El código es este:
Private Sub Workbook_Open()
Dim usuario As String
Dim fila As Integer
usuario = Application.UserName
fila = Application.WorksheetFunction.Match(usuario, Range("USERS"), 0)
Range("USERS").Cells(fila, 2).Value = Range("USERS").Cells(fila, 2).Value + 1
ActiveWorkbook.Save
End Sub
Espero haberme explicado bien, si necesitas alguna aclaración adicional no dudes en escribir. De lo contrario te agradeceré finalizar la pregunta con una valoración acorde con la calidad y oportunidad de la respuesta.
Hola que tal, gracias por responder, te cuento:
El libro al que tendrán acceso los usuarios esta en red y ya están predefinidos quienes entraran a este libro ya tengo a los usuarios de la celda d4:d10 ahí ya están los usuarios capturados, me gustaría que me ayudaras con ese código que tu dices,
que cada vez que entre un usuario a consultar el libro lo sume en su celda correspondiente e4:e10 gracias por todo
Edgar
Ya lo envié
Ups... un error garrafal del experto... se me olvidó decirte que el rango donde tienes los usuarios le debes colocar el nombre USERS
Que pena no haber aclarado eso en el correo inicial.
Ya lo copie y lo pegue y me da el siguiente mensaje de error se ha producido el error ´1004´en tiempo de ejecución
Error en el método ´range´de objeto ´_global´ que sera
Ayudame.
Gracias
Edgar
Perdón por tantas preguntas, pero me sigue marcando el mismo error ya le puse el titulo users en la celda donde esta el rango y me marca el mismo error, un favor por que no lo haces en un archivo de excel y me lo mandas a chivito__(@)hotmail.com o si te puedes conectar por el mensajero te lo agradecería muchas gracias por todo
Estoy muy agradecido con el, pues me apoyo en todo lo que necesite. Muchas gracias
Me enseñaste algo que estaba buscando hace rato.
Bueno busqué y me parece menos complicada la función
Application. UserName
Lo que tendrías que hacer es una macro para el libro( workbook ) que se ejecute con el evento open, una vez obtenga el nombre del usuario lo sume a la celda donde están los nombres de los usuarios.
Me queda una inquietud para desarrollar el código, ¿ya´hay celdas con los nombres de cada usuario con posible acceso al libro? O habría que ir adicionando una celda cada vez que entra un usuario si este no existe en el listado.
Me cuentas y hacemos el código.
Respuesta
1
Dividamos tu proceso en dos partes. La primera es lograr que el libro guarde un contador por usuario cada vez que es visitado.
Para ello asocia la macro que creaste (con un par de modificaciones que explico luego) al evento de apertura.
Para que funcione, activa el editor de Visual Basic (presiona Alt+F11) y busca la hoja que dice "ThisWorkbook" (o "EsteLibro" según la versión")
Copia el código siguiente y pégalo en el panel desplegado a la derecha de su Editor de Visual Basic:
Private Sub Workbook_Open()
Nombre_de_usuario
End Sub
La segunda parte es usar el nombre del usuario para encontrarlo en la hoja activa.
Luego, en el módulo donde tienes la macro que obtiene el nombre de usuario, reemplázala por esta:
Option Explicit
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Sub Nombre_de_usuario()
Dim lpBuff As String * 25
Dim ret As Long, UserName As String
Dim Usuario As Range
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
Sheets("Usuarios").select
With ActiveSheet.Range("D4:D60")
Set Usuario = .Find(UserName, LookIn:=xlValues)
If Not Usuario Is Nothing Then
Usuario.Offset(0, 1).Value = Usuario.Offset(0, 1).Value + 1
ActiveWorkbook.Save
Else
MsgBox "El usuario " & UserName & "No se encuentra en la lista", vbCritical, "USUARIO NO REGISTRADO"
End If
End With
End Sub
Esta macro toma el contenido de la variable y la busca en el rango indicado (asumí que es D4:D60, pero puedes modificarlo tu mismo).
Si la encuentra agrega uno al valor que tenga asu derecha y graba el archivo, de forma tal que quede registrado ese cambio.
En caso de no encontrarlo, mostrará un mensaje.
- Ingresa al sitio www.porloschicos.com y, si quieres,
presiona el botón de donación (es gratis).
Confío en que lo harás.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas