Subject: some LS code to explode groups - you do the rest
I retrieved this off one of the forums, and have been using it for years. You can then do the UI quite easily
Function GetGroupMembers(strGroupName As String ) As Variant
' get Groupmembers is a standard group explode function designed to retrieve all users and users
' within nested groups and return an array of user names
On Error Goto processError1
Dim session As New notesSession
Dim nmUser As notesName
Dim docGroup As notesDocument
Dim docGroupMember As notesDocument
Dim nmServer As notesName
Dim vGroupList() As Variant
Dim vGroupList2 As Variant
Dim dbNab As NotesDatabase
Dim vwPerson As notesView
Dim count As Integer, i As Integer, flag As Integer
Dim groupname As String
Set nmServer = New notesName(Session.CurrentDatabase.Server)
Redim vGroupList(0) As Variant
Dim vwGroup As NotesView
Forall v In session.AddressBooks
If v.isPublicAddressBook Then
Call v.Open("","")
flag = dbNAB.Open(getNameServer,v.FilePath)
If flag Then
If dbNAB.IsOpen Then
If vwGroup Is Nothing Then
Set vwGroup = dbNAB.getView("($VIMGroups)")
End If
groupname=strGroupName
If groupname<>"" Then
'strip off @Domain
If Instr(groupname,"@")>0 Then groupname=Left$(groupname,Instr(groupname,"@")-1)' Else groupname=listnames
Set docGroup = vwGroup.getDocumentByKey(groupname)
If Not docGroup Is Nothing Then
' for each groupMember in members
Forall groupMember In docGroup.Members
If Trim(groupMember) <> "" Then
' if the group member is not a sub-group
Set nmUser = New notesName(groupMember)
Set docGroupMember = vwGroup.GetDocumentByKey(Trim(nmUser.Abbreviated))
If docGroupMember Is Nothing Then
' append it to the end of the list
Call AddToArray(vGroupList, groupMember)
Else
' ***** Recursive Call *****
'groupMember(0)=groupMember
vGroupList2 = GetGroupMembers(groupMember)
' ***************************
' add any recursed group names into the groupNames
Forall groupMember2 In vGroupList2
Call AddToArray(vGroupList, Cstr(groupMember2))
End Forall
End If
End If
End Forall
End If
End If
End If
End If
End If
End Forall
GetGroupMembers = vGroupList
getout:
Exit Function
processError1:
Messagebox "GetGroupMembers: " + Str$(Err)+" at line " +Cstr(Erl),48,LOTUS_SCRIPT_TITLE
GetGroupMembers=""
Resume getout