/ Published in: Visual Basic
This function is very rough and right now is hard coded to return the common name. This can be useful if, for example, you have a list of usernames in Excel and you want to get the name of the person. However, it can be used in any VBA application.
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
Function getLDAPName(clockNumber As String) ' 'Declare Variables Dim objAdoCon, objAdoCmd, objAdoRS Dim objUser, objRootDSE Dim strDomainDN, strUserFullName Dim intAnswer As Integer On Error GoTo Err_NoNetwork ' Get current logged in user name 'strUserFullName = Environ("UserName") ' Get the DN of the user's domain Set objRootDSE = GetObject("LDAP://rootDSE") strDomainDN = objRootDSE.Get("defaultNamingContext") ' Search the domain for the user's account object Set objAdoCon = CreateObject("ADODB.Connection") objAdoCon.Open "Provider=ADsDSOObject;" Set objAdoCmd = CreateObject("ADODB.Command") Set objAdoCmd.ActiveConnection = objAdoCon objAdoCmd.CommandText = _ "SELECT ADsPath FROM 'LDAP://" & strDomainDN & "' WHERE " & _ "objectCategory='person' AND objectClass='user' AND " & _ "sAMAccountName='" & clockNumber & "'" Set objAdoRS = objAdoCmd.Execute ' If found, get the displayName attribute. If (Not objAdoRS.EOF) Then Set objUser = GetObject(objAdoRS.Fields("ADsPath").Value) 'Get common name objUser.GetInfoEx Array("CN"), 0 commonName = objUser.Get("CN") 'get first name objUser.GetInfoEx Array("givenName"), 0 firstName = objUser.Get("givenName") 'get last name objUser.GetInfoEx Array("SN"), 0 lastName = objUser.Get("SN") 'get display name objUser.GetInfoEx Array("DisplayName"), 0 DisplayName = objUser.Get("DisplayName") Set objUser = Nothing getLDAPName = commonName Else ' handle "not found" error here GoTo Err_NoNetwork End If Set objAdoRS = Nothing Set objAdoCmd = Nothing objAdoCon.Close Set objAdoCon = Nothing Set objRootDSE = Nothing Set WshNetwork = Nothing GoTo Exit_Sub Exit_Sub: Exit Function Err_NoNetwork: getLDAPName = "Error" GoTo Exit_Sub End Function