This code generates a list of users from a group name from the NAB. The code will determine whether the name corresponds to a person or group, and if it's a group, then the code will break it down into all person members. The code works even if there are nested groups. However, the code is restricted by the Domino limit on recursive calls, which depends on the Domino Directory.
Code
Function getPersonMembers
(groupName As String) As Variant
Dim nab As New NotesDatabase("","names.nsf")
Dim grpView As NotesView, personView As NotesView
Dim doc As NotesDocument , doc2 As NotesDocument
Dim namesList As Variant
Dim memberList() As String
Dim grpname As NotesName
If nab.Server = "" Then
Set nab = New NotesDatabase
("Servername","names.nsf")
End If
Set grpView = nab.GetView("Groups")
Set personView = nab.GetView("($VIMPeople)")
Set doc = grpView.GetDocumentByKey(groupName)
Redim memberList(0) As String
If Not doc Is Nothing Then
Forall mbrs In doc.members
Set grpname = New NotesName(Cstr(mbrs))
Set doc2 = personView.GetDocumentByKey
(grpname.Common)
tmnE = Elements(memberList)
x = 0
If doc2 Is Nothing Then
namesList = getPersonMembers(grpname.Common)
If Ubound(namesList) > 0 Then
Redim Preserve memberList(0 To tmnE +
Ubound(namesList))
Forall nms In namesList
memberList(tmnE + x) = Cstr(nms)
x=x+1
End Forall
End If
Else
Redim Preserve memberList(0 To tmnE + x)
memberList(tmnE + x) = Cstr(mbrs)
End If
End Forall
Else ' entry is either a person or a mail in db.
t = Elements(memberlist)
Redim Preserve memberList(t)
memberList( t) = Cstr(groupName)
End If
getPersonMembers = memberList
End Function
Do you have comments on this tip? Let us know.
This tip was submitted to the SearchDomino.com tip exchange by member Melissa Fuller. Please let others know how useful it is via the rating scale at the end of the tip. Do you have a useful Notes/Domino tip or code to share? Submit it to our monthly tip contest and you could win a prize and a spot in our Hall of Fame.