Saltar al contenido

Macro que registra usuarios que ocupan archivo


RORO1981

Recommended Posts

publicado

Amigos:

aqui les dejo una macro que cada vez que se abre registra el usuario la fecha y la hora de la persona que ocupa el archivo y lo guarda automaticamente es especial para archivos compartidos.

espero les sirva.. :mad::D:cool::D

saludos

Registra usuarios.zip

publicado
Amigos:

aqui les dejo una macro que cada vez que se abre registra el usuario la fecha y la hora de la persona que ocupa el archivo y lo guarda automaticamente es especial para archivos compartidos.

espero les sirva.. :mad::D:cool::D

saludos

Esta muy bueno, lo unico es que al estar bloqueada la hoja no puedo ver el nombre y la hora completos porque no esta autoajustada al mio que es largo, pero lo importante es lo que hace, si se agrega a este archivo un autoguardar para que en caso de que tengamos ese archivo en red y alguien entrara y abra el archivo se guarde automaticamente el dato y asi evita que cuando se cierre no pregunta si va a guardar (evitariamos que note que estamos grabando que alguien lo abrió) y en cierto modo no este visible la hoja.

Pero nada son ideas y si puedes aplicarla y subirla nuevamente resultaria muy importante.

Saludos,

publicado

Ok le hice los cambios que me sugeriste DRAMIDOM y en cuanto a la opcion de autogardar el archivo si lo hace fijate bien despues de registrar el usuario con la fecha y hora respectiva..

ahh para ver el registro de los usuarios hay que poner visible la hoja 1 ya que se oculta automaticamente..

saludos y espero comentarios

Registra usuarios.zip

publicado
Ok le hice los cambios que me sugeriste DRAMIDOM y en cuanto a la opcion de autogardar el archivo si lo hace fijate bien despues de registrar el usuario con la fecha y hora respectiva..

ahh para ver el registro de los usuarios hay que poner visible la hoja 1 ya que se oculta automaticamente..

saludos y espero comentarios

Acabo de ver pero no dio tiempo a ver el registro pues se oculta la hoja y/o elimina y pues no puedo volverla a mostrar. Ademas si preciono salir del excel me pregunta q si quiero guardar los cambios, la idea como mencione es q guarde y no pregunte (evitariamos que quien lo abrio sepa que estamos capturando quien abre el archivo y nota que pregunta sentira que hubo algun cambio

publicado
Acabo de ver pero no dio tiempo a ver el registro pues se oculta la hoja y/o elimina y pues no puedo volverla a mostrar. Ademas si preciono salir del excel me pregunta q si quiero guardar los cambios, la idea como mencione es q guarde y no pregunte (evitariamos que quien lo abrio sepa que estamos capturando quien abre el archivo y nota que pregunta sentira que hubo algun cambio

listo ahora si hace un auto guardado automatico si entras y no haces ningun cambio y luego sales no te pregunta por los cambios

para ver la hoja debes ir al editor de visual basic posicionarte sobre la hoja oculta (en este caso la hoja1) y abajo en las propiedades de la hoja cambias la propiedad visible a xlsheetvisible (creo que es la primera).

la hoja no se eliminó solo está oculta ojo.

te adjunto archivo con modificacion

saludos

Registra usuarios.zip

publicado
listo ahora si hace un auto guardado automatico si entras y no haces ningun cambio y luego sales no te pregunta por los cambios

para ver la hoja debes ir al editor de visual basic posicionarte sobre la hoja oculta (en este caso la hoja1) y abajo en las propiedades de la hoja cambias la propiedad visible a xlsheetvisible (creo que es la primera).

la hoja no se eliminó solo está oculta ojo.

te adjunto archivo con modificacion

saludos

Ok excelente ahora si va todo bien puede servir para mucho este archivo, solo habria que colocar en alguna hoja visible un boton o un codigo para llamar en una macro sin tener que entrar a la propiedades para que muestre la hoja oculta y con esa parte el archivo estaria estupendo puede servir para ver quienes son esos que abren nuestros archivos almacenados en la red jeje...

publicado
Ok excelente ahora si va todo bien puede servir para mucho este archivo, solo habria que colocar en alguna hoja visible un boton o un codigo para llamar en una macro sin tener que entrar a la propiedades para que muestre la hoja oculta y con esa parte el archivo estaria estupendo puede servir para ver quienes son esos que abren nuestros archivos almacenados en la red jeje...

ok puse un boton en la hoja 2 que muestra el registro de los usuarios que han ocupado el archivo y otro en la hoja1 donde estan los registros para volver a ocultarlos...

espero los comentarios

saludos

Registra usuarios.zip

publicado
ok puse un boton en la hoja 2 que muestra el registro de los usuarios que han ocupado el archivo y otro en la hoja1 donde estan los registros para volver a ocultarlos...

espero los comentarios

saludos

Ok RORO1981 Mucho mejor ahora mereces un 100 esto se podria mejorar mucho mas pero ya el cien lo mereces.

Se acabo aquellos que entran a nuestros archivos desde la red y piensan que no lo sabremos jeje. Claro esto dependera de ciertas cosas como por ejemplo que en cada maquina el administrador instalo el offices y no lo haya configurado a nombre de la empresa jeje, sino por los usuarios que la usan porque sino solo veremos horas y el mismo nombre de las maquinas sin saber cual fue la persona que entro, por eso mencione se puede mejor mucho mas aun, como por ejemplo numero de ip de red la maquina, etc.. etc..

Saludos,

publicado
Ok RORO1981 Mucho mejor ahora mereces un 100 esto se podria mejorar mucho mas pero ya el cien lo mereces.

Se acabo aquellos que entran a nuestros archivos desde la red y piensan que no lo sabremos jeje. Claro esto dependera de ciertas cosas como por ejemplo que en cada maquina el administrador instalo el offices y no lo haya configurado a nombre de la empresa jeje, sino por los usuarios que la usan porque sino solo veremos horas y el mismo nombre de las maquinas sin saber cual fue la persona que entro, por eso mencione se puede mejor mucho mas aun, como por ejemplo numero de ip de red la maquina, etc.. etc..

Saludos,

Listo le incorporé al registro la dirección ip del pc que ocupa el archivo espero sea de utilidad

saludos....

Registra usuarios v2.zip

publicado

Hola Roro, aqui te dejo dos funciones que hace lo mismo pero gastando menos codigo, creo que usas demasiadas funciones API que realmente no son necesarias

Sacar USERNAME:

    ' Makes sure all variables are dimensioned in each subroutine.
Option Explicit

' Access the GetUserNameA function in advapi32.dll and
' call the function GetUserName.
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long

' Main routine to Dimension variables, retrieve user name
' and display answer.
Sub Get_User_Name()

' Dimension variables
Dim lpBuff As String * 25
Dim ret As Long, UserName As String

' Get the user name minus any trailing spaces found in the name.
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, [color=black]Chr[/color](0)) - 1)

' Display the User Name
MsgBox UserName
End Sub[/CODE]

Funcion que extrae todas las IP del equipo:

[CODE]Private Declare Function GetIpAddrTable_API Lib "IpHlpApi" Alias "GetIpAddrTable" (pIPAddrTable As Any, pdwSize As Long, ByVal bOrder As Long) As Long

' Returns an array with the local IP addresses (as strings).
' Author: Christian d'Heureuse, www.source-code.biz
Public Function GetIpAddrTable()
Dim Buf(0 To 511) As Byte
Dim BufSize As Long: BufSize = UBound(Buf) + 1
Dim rc As Long
rc = GetIpAddrTable_API(Buf(0), BufSize, 1)
If rc <> 0 Then Err.Raise vbObjectError, , "GetIpAddrTable failed with return value " & rc
Dim NrOfEntries As Integer: NrOfEntries = Buf(1) * 256 + Buf(0)
If NrOfEntries = 0 Then GetIpAddrTable = Array(): Exit Function
ReDim IpAddrs(0 To NrOfEntries - 1) As String
Dim i As Integer
For i = 0 To NrOfEntries - 1
Dim j As Integer, s As String: s = ""
For j = 0 To 3: s = s & IIf(j > 0, ".", "") & Buf(4 + i * 24 + j): Next
IpAddrs(i) = s
Next
GetIpAddrTable = IpAddrs
End Function


' Test program for GetIpAddrTable.
Public Sub Test()
Dim IpAddrs
IpAddrs = GetIpAddrTable
Debug.Print "Nr of IP addresses: " & UBound(IpAddrs) - LBound(IpAddrs) + 1
Dim i As Integer
For i = LBound(IpAddrs) To UBound(IpAddrs)
MsgBox IpAddrs(i)
Next
End Sub[/CODE]

Por cierto, queria preguntarte, nunca vi una hoja que estuviera completamente invisible, nisiquiera aparece en el menu de mostrar hojas, ¿Hay alguna forma alternativa de volver a mostrar la Hoja1 sin usar macros?

Un saludo

publicado
Hola Roro, aqui te dejo dos funciones que hace lo mismo pero gastando menos codigo, creo que usas demasiadas funciones API que realmente no son necesarias

Sacar USERNAME:

    ' Makes sure all variables are dimensioned in each subroutine.
Option Explicit

' Access the GetUserNameA function in advapi32.dll and
' call the function GetUserName.
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long

' Main routine to Dimension variables, retrieve user name
' and display answer.
Sub Get_User_Name()

' Dimension variables
Dim lpBuff As String * 25
Dim ret As Long, UserName As String

' Get the user name minus any trailing spaces found in the name.
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, [color=black]Chr[/color](0)) - 1)

' Display the User Name
MsgBox UserName
End Sub[/CODE]

Funcion que extrae todas las IP del equipo:

[CODE]Private Declare Function GetIpAddrTable_API Lib "IpHlpApi" Alias "GetIpAddrTable" (pIPAddrTable As Any, pdwSize As Long, ByVal bOrder As Long) As Long

' Returns an array with the local IP addresses (as strings).
' Author: Christian d'Heureuse, www.source-code.biz
Public Function GetIpAddrTable()
Dim Buf(0 To 511) As Byte
Dim BufSize As Long: BufSize = UBound(Buf) + 1
Dim rc As Long
rc = GetIpAddrTable_API(Buf(0), BufSize, 1)
If rc <> 0 Then Err.Raise vbObjectError, , "GetIpAddrTable failed with return value " & rc
Dim NrOfEntries As Integer: NrOfEntries = Buf(1) * 256 + Buf(0)
If NrOfEntries = 0 Then GetIpAddrTable = Array(): Exit Function
ReDim IpAddrs(0 To NrOfEntries - 1) As String
Dim i As Integer
For i = 0 To NrOfEntries - 1
Dim j As Integer, s As String: s = ""
For j = 0 To 3: s = s & IIf(j > 0, ".", "") & Buf(4 + i * 24 + j): Next
IpAddrs(i) = s
Next
GetIpAddrTable = IpAddrs
End Function


' Test program for GetIpAddrTable.
Public Sub Test()
Dim IpAddrs
IpAddrs = GetIpAddrTable
Debug.Print "Nr of IP addresses: " & UBound(IpAddrs) - LBound(IpAddrs) + 1
Dim i As Integer
For i = LBound(IpAddrs) To UBound(IpAddrs)
MsgBox IpAddrs(i)
Next
End Sub[/CODE]

Por cierto, queria preguntarte, nunca vi una hoja que estuviera completamente invisible, nisiquiera aparece en el menu de mostrar hojas, ¿Hay alguna forma alternativa de volver a mostrar la Hoja1 sin usar macros?

Un saludo

si tienes que ir al editor de visual basic posicionarte sobre la hoja oculta (en este caso la hoja1) y en las propiedades le cambias el status a xlsheetvisible creo que es la primera..

gracias por el codigo....

saludos

publicado
Listo le incorporé al registro la dirección ip del pc que ocupa el archivo espero sea de utilidad

saludos....

Hola RORO1981 debido a que no pude volver a entrar al foro no habia el avance que llevas en el archivo, agradezco que has tomado el consejo que te he dado, se esta poniendo muy interesante el archivo... resulta estupendo esto; podrian incluso recomendarte algunas funciones extras a modo de ampliar la informacion que se podrian obtener aparte de las que has agregado pero bien no se si alguien quiera participar porque todo dependerá de cada caso.

publicado

Hola Dramidom

Escuchando tu propuesta, ¿por que no agregar la MAC Adress?, este numerito compuesto de 6 valores hexadecimales de 255 cada uno es unico e irremplazable en cada equipo. Puede haber cientos de ordenadores con el mismo nombre ANTONIO, pero cada uno de esos PC tiene una MAC que no se repetira en ninguno de ellos tipo:00-1E-68-F0-FE-D9

Aqui dejo el enlace a wikipedia

Aqui dejo el link al codigo para VB6

Saludos

publicado
Hola Dramidom

Escuchando tu propuesta, ¿por que no agregar la MAC Adress?, este numerito compuesto de 6 valores hexadecimales de 255 cada uno es unico e irremplazable en cada equipo. Puede haber cientos de ordenadores con el mismo nombre ANTONIO, pero cada uno de esos PC tiene una MAC que no se repetira en ninguno de ellos tipo:00-1E-68-F0-FE-D9

Aqui dejo el enlace a wikipedia

Aqui dejo el link al codigo para VB6

Saludos

Gracias Verzulan, lo que habia recomendado solo fue una posibilidad de obtener mas información; en el caso de lo que pedi que hacia referencia a la ip lo hacia debido a que trabaje en un lugar donde tenemos muchas computadoras conectadas en la red, todos nos conectamos por un nombre de dominio y para mi es mas facil saber por la IP cual es la persona a quien esta asignada esta ip; claro con lo que comentas es tambien un dato importante pero no soy experto en redes y me complicaria mas viendo esos valores jeje... pero como comente antes si el amigo RORO desea agregarle mas cosas al archivo que inicio pues bienvenido sea todo para bien de los que tendremos la oportunidad de usar este codigo.

  • 4 years later...
publicado

Hola, la verdad es que no soy experto en excel ni mucho menos, pero me pareció una excelente idea el poder registrar los usuarios que acceden a los archivos. En mi caso, entrego bastantes reportes a múltiples usuarios y no sé si realmente los están usando o si en algunos casos es tiempo perdido.

Intenté seguir todos los pasos propuestos, sin embargo me arroja un error de compatibilidad con 64 bits.

Me podrían ayudar a ver como soluciono ese problema?

Muchas gracias!

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.