Identificar mi PC desde VBA para vincular a usuario

Utilizo un libro compartido donde 3 personas lo accesan en distintas computadoras. El problema es que para identificar quien lo utilizo debo recurrir actualmente a una validación previa a cada módulo. Quisiera lograr lo siguiente:

Cuando ingreso por primera vez, que mi equipo registre el uso del ordenador que lo utiliza, por ejemplo: "Taller-PC" ya que a este PC, le asignaría mi usuario: "Donny Morera" como parte del registro o bitácora.

Ya que conociendo el código que identifica mi ordenador, podría decirle a los módulos que cada vez antes de iniciar, identifique mi ordenador y busque en los registros del día, cual usuario se registró en él. Así podría saber de forma previa quien lo utiliza!

2 respuestas

Respuesta
1

Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _

(ByVal lpbuffer As String, nSize As Long) As Long

'Por Emilio:

'***************************************************************************

'* Devuelve el nombre del PC en que se está ejecutando la aplicación

'* uso strNombre = NombrePC

'* ESH 18/12/02 15:06

'***************************************************************************

Public Function NombrePC()

    Dim WS As Object

    Set WS = CreateObject("WScript.network")

    NombrePC = WS.ComputerName

    Set WS = Nothing

End Function            ' NombrePC

'***************************************************************************

'* Devuelve el nombre del usurio con que se ha iniciado la sesión

'* uso strNombre = NombreUsuario

'* ESH 18/12/02 15:10

'***************************************************************************

Public Function NombreUsuario()

    Dim WS As Object

    Set WS = CreateObject("WScript.network")

    NombreUsuario = WS.UserName

    Set WS = Nothing

End Function            ' NombreUsuario

'Esta función devuelve el nombre del Usuario

Public Function UsuarioActual() As String

    Dim sBuffer As String

    Dim lSize As Long

    Dim sUsuario As String

    sBuffer = Space$(260)

    lSize = Len(sBuffer)

    Call GetUserName(sBuffer, lSize)

    If lSize > 0 Then

        sUsuario = Left$(sBuffer, lSize)

        'Quitarle el CHR$(0) del final...

        lSize = InStr(sUsuario, Chr$(0))

    If lSize Then

        sUsuario = Left$(sUsuario, lSize - 1)

        End If

    Else

        sUsuario = ""

    End If

    UsuarioActual = sUsuario

End Function

Y luego utilizamos un formulario con algunas etiquetas de texto donde mostrar dicha información que recuperamos llamando a los procedimientos del módulo.

Private Sub Form_Current()

    Me.MiNombre.Caption = "Usuario: " & NombreUsuario

    Me.Red.Caption = "Red Equipo: " & NombrePC

    Me.UsuarioN.Caption = "Usuario: " & Environ("Username")

    Me.OtroUsuario.Caption = "Otro Usuario: " & UsuarioActual

End Sub

Private Sub Boton_Click()

   MsgBox Environ("COMPUTERNAME")

End Sub

Y así aún más sencillo... seguido a ello puedes emplear el códigon en lo que gustes!

Respuesta
-1

Ese tipo de identificación se puede utilizar en access, y guardar en una tabla cada acceso, con usuario, hora, etc. Pero en Excel no tienes tablas donde guardar ese tipo de datos. Además en Excel no pueden tener acceso, al mismo tiempo, dos o más ordenadores. Hasta que un usuario no cierre el programa, los demás usuarios sólo pueden ver datos pero no hacer modificaciones.

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas