Can anyone help me ?
Sub Simple_Contact()
Dim WorkingFolder As Outlook.MAPIFolder
Dim objItem As Outlook.ContactItem
Dim StartCell As Object
Dim Cnt As Integer
Dim olMAPI As New Outlook.Application
ActiveSheet.Cells.Clear
Set WorkingFolder =
olMAPI.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
Set StartCell = Range("A4")
With StartCell
.Resize(1, 4).Value = Array("Name", "Bus Phone", "Home Phone",
"EMail")
For Cnt = 1 To WorkingFolder.Items.Count
Set objItem = WorkingFolder.Items(Cnt)
.Offset(Cnt, 0).Value = objItem.FullName
.Offset(Cnt, 1).Value = objItem.BusinessTelephoneNumber
.Offset(Cnt, 2).Value = objItem.HomeTelephoneNumber
.Offset(Cnt, 3).Value = objItem.eMail1Address
Next Cnt
End With
ActiveSheet.Columns.AutoFit
Set objItem = Nothing
Set WorkingFolder = Nothing
Set olMAPI = Nothing
If Not IsNull(Application.MailSession) Then Application.MailLogoff
End Sub
--
Jim Rech
Excel MVP
Can you change your code ?
>.
>
>.
>
>.
>
I've done this before using CDO in Excel. Here is my sample code to
extract display name an SMTP email address from by outlook Global
Address Book. You need to have CDO 1.21 installed. You can get it from
http://ourworld.compuserve.com/homepages/attac-cg/cdolib.htm
Option Explicit
Dim objCdoSession
Dim colMsgs
Function ReadGBA()
On Error Resume Next
Dim objAddressList ' Global address list
Dim objAddressEntries ' AddressEntries
Dim objAddressEntry ' AddressEntry
Dim objAddressField ' Field object
Dim objAddressFields ' Fields collection
Dim objtemp
Dim strOrganization
Dim I
' Initialize objects
Set objAddressList = Nothing
Set objAddressEntries = Nothing
Set objAddressEntry = Nothing
Set objAddressField = Nothing
Set objAddressFields = Nothing
Set objCdoSession = Nothing
Set colMsgs = Nothing
If LogonCDO = True Then
Worksheets("Sheet1").Cells(1, 1) =
objCdoSession.CurrentUser.Name
Worksheets("Sheet1").Cells(2, 1) =
objCdoSession.CurrentUser.Address
strOrganization = objCdoSession.CurrentUser.Address
' 0 for Global Address book
' 1 for Personal Address book
Set objAddressList = objCdoSession.GetAddressList(0)
Set objAddressEntries = objAddressList.AddressEntries
Set objAddressFields = objAddressList.AddressEntries.Fields
' Get Name from Address Book
Worksheets("Sheet1").Cells(5, 1) =
objAddressEntries.GetFirst()
Set objtemp = objAddressEntries.GetFirst()
Set objAddressFields = objtemp.Fields
' Get SMTP from Address Book
Worksheets("Sheet1").Cells(5, 2) =
objAddressFields.Item(&H39FE001E).Value
I = 1
Do
Worksheets("Sheet1").Cells(5 + I, 1) =
objAddressEntries.GetNext()
If Trim(objAddressEntries.GetNext()) = "" Then
Exit Do
End If
Set objtemp = objAddressEntries.GetNext()
Set objAddressFields = objtemp.Fields
Worksheets("Sheet1").Cells(5 + I, 2) =
objAddressFields.Item(&H39FE001E).Value
I = I + 1
Loop
End If
End Function
Function LogonCDO() As Boolean
On Error Resume Next
LogonCDO = True
Set objCdoSession = CreateObject("MAPI.Session")
If Not objCdoSession.Version >= 1.21 Then
Set objCdoSession = Nothing
LogonCDO = False
Else
objCdoSession.Logon , , True, False, -1, True
End If
If Err Then LogonCDO = False
End Function
-----------------------------------------------------------------
Use this as reference to extract your desire field.
&H3001001E Display (name)
&H3A00001E Alias
&H3A0F001E Exchange server alias *
&H3A06001E First (name)
&H3A0A001E Initials
&H3A11001E Last (name)
&H3A29001E Address
&H3A17001E Title
&H3A16001E Company
&H3A27001E City
&H3A18001E Department
&H3A28001E State
&H3A19001E Office
&H3A2A001E Zip code
&H3A30001E Assistant
&H3A26001E Country
&H3A08001E Phone
&H3A1B001E Business 2
&H3A23001E Fax
&H3A2E001E Assistant
&H3A09001E Home
&H3A2F001E Home 2
&H3A1C001E Mobile
&H3A21001E Pager
&H3004001E Notes
&H39FE001E SMTP e-mail address
"Jim Rech" <jar...@kpmg.com> wrote in message news:<u1DxrOoGBHA.696@tkmsftngp04>...
Realise some mistakes after posting the source code, here is the
correct one :
Set objtemp = objAddressEntries.GetFirst()
Worksheets("Sheet1").Cells(5, 1) = objtemp
Set objAddressFields = objtemp.Fields
Worksheets("Sheet1").Cells(5, 2) =
objAddressFields.Item(&H39FE001E).Value
I = 6
Do
Set objtemp = objAddressEntries.GetNext()
If Trim(objtemp) = "" Then
Exit Do
End If
Worksheets("Sheet1").Cells(I, 1) = objtemp
Set objAddressFields = objtemp.Fields
Worksheets("Sheet1").Cells(I, 2) =