Blev lidt trigget af denne fra Allan:
Der laver API-kald til DLL'er fra VBA, og det virker skam.
MEN, nu er der jo ikke mange Windows installationer, der ikke benytter AD som sikkerhedssystem så hvorfor ikke spørge den vej rundt, og slippe for at binde sig til DLL'er !
Prøv med denne UDF variant af BrugerNavn() funktionen, f.eks:
Function Brugernavn()
' Added here by Peter Rosenberg
' As you can see, the other variables: UserNameCN and ComputerID is also available, so you could
' extend the UDF function, to return an array with all three return values (Ctrl+Shift+Enter)
'*************************************************************
Application.Volatile
Dim ReturnText(2) As String
Dim UserNameCN As String
Dim ComputerID As String
Dim ntSys
Set ntSys = CreateObject("WinNTSystemInfo")
Dim adSys
Set adSys = CreateObject("ADSystemInfo")
UserNameCN = Left(adSys.UserName, InStr(1, adSys.UserName, ",OU=") - 1)
ComputerID = Left(adSys.ComputerName, InStr(1, adSys.ComputerName, ",OU=") - 1)
UserNameCN = Replace(UserNameCN, "CN=", "")
UserNameCN = Replace(UserNameCN, "\", "")
ComputerID = Replace(ComputerID, "CN=", "")
Debug.Print "Current user: " & UserNameCN & " - from COMPUTER: " & ComputerID
Debug.Print "Current user ID: " & ntSys.UserName
ReturnText(0) = ntSys.UserName
ReturnText(1) = UserNameCN
ReturnText(2) = ComputerID
Brugernavn = ReturnText
End Function