Using the Windows API to extract the Windows User Name

M

Mike

Hi,

I found this information on another website: (I am trying
to use the Windows API to extract the login information of
the user who has a workbook open for editing.

Just a thought: if this is your workbook (or at least you
have control over it)and you want to know who is opening
it, you could write code in the Workbook_Open event which
captures the user's userID, name, etc (using Windows APIs)
and persist these values somewhere visible to you. An
extension to this idea is to get the workbook to regularly
poll (using the OnTime method) a database, text file on
the network, etc where you can set a value to tell the
workbook to close, effectively throwing out the current
user so that you can open the workbook.

--

PS said:
Hello,

In a Network Computer, an Excel file is opened by someone (eg. PS)

When I open the Excel file, this message dialog is prompted

aaa.xls is locked for editing by 'PS'

Open ..... ...... ....... ..... ..... ...... ...... in use.

My Question is "Is there any way to extract 'PS' ?"
Maybe API ?

Thanks in advance.

This is my question. How do I use the Windows API to
extract the Windows login information (username) to use in
the Workbook_Open event of who has the Excel workbook open
for editing.

Any help would be greatly appreciated

Thanks,

Mike
 
G

Guest

Cut and paste this code into a module. The function returns the User name of
the person logged into the computer.

Option Explicit


'-----------------------------------------------------------------------------------------------------
' This module only provides the username
'=====================================================================================================


Private Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long


Public Function ReturnNTUserName() As String

' Returns the NT Domain User Name

Dim rString As String * 255, sLen As Long, tString As String
Dim NWUserName As String

tString = ""

On Error Resume Next
sLen = GetUserName(rString, 255)
sLen = InStr(1, rString, Chr(0))
If sLen > 0 Then
tString = Left(rString, sLen - 1)
Else
tString = rString
End If
On Error GoTo 0

NWUserName = Left(Right(tString, Len(tString) - 1), Len(tString) - 2)
ReturnNTUserName = UCase(Left(tString, 1)) + NWUserName +
Right(UCase(tString), 1)

End Function
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top