From https://wp.normalchaos.com/wordpress/archives/category/macros
Instructions
Here is the code for the macro. Hopefully, it is useful to someone. Please let me know if you have any problems so I can correct make an effort to correct the macro.
IMPORTANT A regular copy/paste should work correctly. However, you may experience issues with line breaks that prevent the macro from working. If this is the case, the Outlook VB editor will make it abundantly clear what lines are invalid, so it should be pretty easy to fix rogue line wrapping.
':::::::::::::::::: Macro Begins Here; Copy this line and everything below
Sub RemoveDuplicateContacts()
Dim StatusMessage As String
Dim olApp As Outlook.Application
Dim olContact1 As Outlook.ContactItem
Dim olContact2 As Outlook.ContactItem
Dim olItems As Outlook.Items
Dim olNS As Outlook.NameSpaceSet olApp = New Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")
Set olItems = olNS.GetDefaultFolder(olFolderContacts).Items
olItems.Sort ("File As")
Dim DeleteCount As Integer
Dim z As Integer
DeleteCount = 0
StatusMessage = ""
For z = olItems.Count To 2 Step -1
On Error GoTo GroupFound:
ContinueAfterGroup:
Set olContact1 = olItems.Item(z)
Set olContact2 = olItems.Item(z - 1)
On Error GoTo Error1:
DoEvents
' Check key fields to make sure this is a duplicate
' Compare first and last names, home phone, mobile phone, and
' all 3 e-mail addresses to make sure nothing gets overlooked.
' Assume all other fields are the same or unimportant
If olContact1.FileAs = olContact2.FileAs _
And olContact1.FirstName = olContact2.FirstName _
And olContact1.LastName = olContact2.LastName _
And olContact1.Email1Address = olContact2.Email1Address _
And olContact1.Email2Address = olContact2.Email2Address _
And olContact1.Email3Address = olContact2.Email2Address _
And olContact1.HomeTelephoneNumber = olContact2.HomeTelephoneNumber _
And olContact1.MobileTelephoneNumber = olContact2.MobileTelephoneNumber _
Then
'Determine whether or not addresses exist
If olContact1.MailingAddress = olContact2.MailingAddress _
And olContact1.BusinessAddress = olContact2.BusinessAddress Then
olContact1.Delete
StatusMessage = StatusMessage & "Contact item " & olContact2.FileAs & _
" deleted" & vbCrLf & vbCrLf
Debug.Print "Contact item " & olContact2.FileAs & " deleted"
DeleteCount = DeleteCount + 1
Else
StatusMessage = StatusMessage & "Mailing addresses are not the same for contacts " & _
olContact1.FileAs & "." & vbCrLf & _
"Contact not deleted. You may want to manually update " & _
"the contact information." & vbCrLf & vbCrLf
Debug.Print "Mailing addresses are not the same for contacts " & _
olContact1.FileAs & ". Please investigate."
End If
End If
Next
MsgBox DeleteCount & " duplicate Outlook Contacts have been removed" & _
vbCrLf & vbCrLf & StatusMessage
Exit Sub
GroupFound:
z = z - 1
Resume ContinueAfterGroup:
Error1:
MsgBox "Whoops! Something went horribly wrong (but your contacts are just fine)!"
End Sub
':::::::::::::::::: Macro Ends Here
|
No questions yet.