totn Access

MS Access 2003: Retrieve the user name from Windows

This MSAccess tutorial explains how to retrieve the user name from Windows in Access 2003 (with screenshots and step-by-step instructions).

Question: In Microsoft Access 2003/XP/2000/97, how can I retrieve the name of the user logged into Windows?

Answer: To retrieve the user name from Windows, create a new Module in Access.

Paste the following code into the Module:

Declare Function WNetGetUser Lib "mpr.dll" _
  Alias "WNetGetUserA" (ByVal lpName As String, _
  ByVal lpUserName As String, lpnLength As Long) As Long

Const NoError = 0           'The Function call was successful

Function GetUserName() As String

   Dim LUserName As String
   Const lpnLength As Integer = 255
   Dim status As Integer
   Dim lpName

   ' Assign the buffer size constant to lpUserName.
   LUserName = Space$(lpnLength + 1)

   ' Get the log-on name of the person using product.
   status = WNetGetUser(lpName, LUserName, lpnLength)

   ' See whether error occurred.
   If status = NoError Then
      ' This line removes the null character. Strings in C are null-
      ' terminated. Strings in Visual Basic are not null-terminated.
      ' The null character must be removed from the C strings to be used
      ' cleanly in Visual Basic.
      LUserName = Left$(LUserName, InStr(LUserName, Chr(0)) - 1)

   Else
      ' An error occurred.
      MsgBox "Unable to get the name."
      End
   End If

   GetUserName = LUserName

End Function

Your module should now look something like this:

Microsoft Access

You can now reference this function to retrieve the user name from Windows.

For example, you could reference the function called GetUserName in a query as follows:

Microsoft Access