* code sample by Marcia Akins #define olFolderContacts 10 Local loAddressBook AS Outlook.MAPIFolder Local loContact AS Object Local lnContactCount AS Integer *** Get a reference to the contacts folder loOutlook = CREATEOBJECT( 'Outlook.Application' ) loNameSpace = loOutlook.GetNameSpace( 'MAPI' ) loAddressBook = loNameSpace.GetDefaultFolder( olFolderContacts ) If Vartype( loAddressBook ) = 'O' lnContactCount = 0 *** Get info about each contact into the array FOR EACH loContact IN loAddressBook.Items WITH loContact *** Make sure we only get individual contacts *** and skip any distribution lists IF .Class = loContact lnContactCount = lnContactCount + 1 DIMENSION laContacts[ lnContactCount, 4 ] laContacts[ lnContactCount, 1 ] = .LastName laContacts[ lnContactCount, 2 ] = .FirstName laContacts[ lnContactCount, 3 ] = .Email1Address laContacts[ lnContactCount, 4 ] = .FullName ENDIF ENDWITH ENDFOR ASORT( laContacts ) EndIfFor OE, I'd look at http://www.insideoutlookexpress.com/ by Tom Koch [MVP]