Try this:
Option Explicit
Sub GetGroupData()
GetGroupMembership Sheet1.Range("D2").Value, Sheet1.Range("A8")
End Sub
Sub GetGroupMembership(strUser As String, rngOut As Range)
Dim objConnection, objCommand, objRecordSet, objUser, objRootDSE, objMember
Dim strLine, arrGroup
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
Set objRootDSE = GetObject("LDAP://RootDSE")
objCommand.CommandText = "SELECT aDSPath FROM 'LDAP://" & objRootDSE.Get("defaultNamingContext") & _
"' WHERE objectClass='user' And name='" & strUser & "'"
Set objRootDSE = Nothing
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 600
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute
rngOut.CurrentRegion.Offset(1).ClearContents
While Not objRecordSet.EOF
Set objUser = GetObject(objRecordSet.Fields("aDSPath"))
For Each objMember In objUser.GetEx("memberOf")
strLine = Mid(objMember, 4, 330)
arrGroup = Split(strLine, ",")
rngOut.Value = arrGroup(0)
Set rngOut = rngOut.Offset(1)
Next
' Additional section to find the primary group.
If objUser.primaryGroupID = 513 Then
rngOut.Value = "Domain Users"
Else
If objUser.primaryGroupID = 515 Then
rngOut.Value = "Domain Computers"
Else
rngOut.Value = "Maybe a Domain Controller"
End If
End If
Set objUser = Nothing
objRecordSet.MoveNext
Wend
objConnection.Close
Set objRecordSet = Nothing
Set objCommand = Nothing
Set objConnection = Nothing
End Sub
Bookmarks