asked on
Sub MyRule(Item As Outlook.MailItem)
Dim objOL As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim objContact As Outlook.ContactItem
Dim objItems As Outlook.Items
Dim objContactsFolder As Outlook.MAPIFolder
Dim obj As Object
Dim NameFilter As String, strFile As String, i As Integer
Dim RowNo As Integer, MaxRows As Integer
Set xlApp = CreateObject("Excel.Application")
If xlApp = "Microsoft Excel" Then
Else
With xlApp
.Visible = True
.EnableEvents = False
End With
End If
strFile = "C:\Personal\OutlookData\OutlookRuleFileEmails.xlsm"
On Error GoTo openit
If sourceWB.Name <> "OutlookRuleFileEmails.xlsm" Then
openit:
Set sourceWB = xlApp.Workbooks.Open(strFile) ', , False, , , , , , , True)
Set sourceWS = sourceWB.Worksheets("EmailRule")
sourceWB.Activate
End If
Set objOL = CreateObject("Outlook.Application")
Set objNS = objOL.GetNamespace("MAPI")
Set objContactsFolder = objNS.GetDefaultFolder(olFolderContacts)
Set objItems = objContactsFolder.Items
NameFilter = "[Email1Address] = " & """" & Item.SenderEmailAddress & """"
Set objContact = objItems.Find(NameFilter)
On Error GoTo NoContactFound
If objContact.Class = olContact Then
'-----------------
MsgBox "First " & vbNewLine & Item.Subject & vbNewLine & Item.SenderEmailAddress & vbNewLine & NameFilter & vbNewLine & objContactsFolder.Name & vbNewLine & objContact.Email1Address & vbNewLine & Format(Item.ReceivedTime, "mm/dd/yyyy") & vbNewLine & sourceWS.Cells(i, 2) & vbNewLine & sourceWS.Cells(i, 3) & vbNewLine & i
RowNo = 1
MaxRows = sourceWS.Cells(1, 1)
While RowNo <= MaxRows
MsgBox "Second " & vbNewLine & Item.Subject & vbNewLine & Item.SenderEmailAddress & vbNewLine & NameFilter & vbNewLine & objContactsFolder.Name & vbNewLine & objContact.Email1Address & vbNewLine & Format(Item.ReceivedTime, "mm/dd/yyyy") & vbNewLine & sourceWS.Cells(i, 2) & vbNewLine & sourceWS.Cells(i, 3) & vbNewLine & i
If Item.SenderEmailAddress = sourceWS.Cells(i, 2) Then
MsgBox "Third " & vbNewLine & Item.Subject & vbNewLine & Item.SenderEmailAddress & vbNewLine & NameFilter & vbNewLine & objContactsFolder.Name & vbNewLine & objContact.Email1Address & vbNewLine & Format(Item.ReceivedTime, "mm/dd/yyyy") & vbNewLine & sourceWS.Cells(i, 2) & vbNewLine & sourceWS.Cells(i, 3) & vbNewLine & i
objContact.Body = objContact.Body & vbNewLine & "--------------------" & vbNewLine & Format(Item.ReceivedTime, "mm/dd/yyyy") & " " & Item.Subject & vbNewLine & sourceWS.Cells(i, 3)
objContact.Save
End If
RowNo = RowNo + 1
Wend
End If
NoContactFound:
MsgBox "NoContactFound" & vbNewLine & NameFilter
End Sub