2015-05-22 94 views
0

因此,我基本上想循环收件箱中的每封电子邮件,直到A列中的主题行与电子邮件的主题行相匹配。当它找到一个匹配项时,它将沿着C列中的同一行查找,并根据此处找到的内容(YES,NO或MULTIPLE),电子邮件的类别将发生变化。根据excel中的数据更改电子邮件的类别标记

在宏运行之前,每封邮件都被标记为“ATLG”。

下面的代码是非常多的工作正在进行中,但我不知道从哪里去。有什么建议么?

Dim mail As Outlook.MailItem 
Dim fld As Outlook.MAPIFolder 

For Each mail In fld.Items 
With mail 
If mail.Subject = Sheets("Mail Report").Range("A65000").End(xlUp).Value Then 
If Sheets("Mail Report").Range("C65000").End(xlUp).Value = "YES" Then 
mail.Category = "ATLG" 
If Sheets("Mail Report").Range("C65000").End(xlUp).Value = "NO" Then 
mail.Category = "MAN" 
If Sheets("Mail Report").Range("C65000").End(xlUp).Value = "MULTIPLE" Then 
mail.Category = "MULT" 
Next mail 

Excel Info

回答

1

这是你想什么呢? (未经测试

Dim mail As Outlook.MailItem 
Dim fld As Outlook.MAPIFolder 
Dim ws As Worksheet 


Set ws = Sheets("Mail Report") 

Set fld = GetObject("", "Outlook.Application") _ 
.GetNamespace("MAPI").Session.PickFolder 
If fld Is Nothing Then 
    MsgBox "No Inbox selected" 
    Exit Sub 
End If 

'~~> Find last row in Col A 
lRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row 

For Each mail In fld.Items 
    With mail 
     '~~> Loop through values of Col A 
     For i = 2 To lRow 
      '~~> Match subject 
      If mail.Subject = ws.Range("A" & i).Value Then 
       Select Case UCase(ws.Range("B" & i).Value) 
        Case "YES": mail.Categories = "ATLG" 
        mail.Save 
        Case "NO": mail.Categories = "MAN" 
        mail.Save 
        Case "MULTIPLE": mail.Categories = "MULT" 
        mail.Save 
       End Select 

       Exit For 
      End If 
     Next i 
    End With 
Next mail 

我终于得到了上面的代码工作。这很简单,因为在每个Case行下面使用mail.Save

+0

感谢您的回复。我曾尝试过实现上面的代码,但它不提供任何结果。甚至没有错误 – redd

+0

我希望它能够浏览整个电子邮件列表并编辑所有标签 – redd

+0

您是否调试过代码并查看代码是否进入'For I'循环?另外主题应该是完全匹配?我的意思是他们可以区分大小写吗? –

相关问题