根据 excel 中的数据更改电子邮件的类别标签
Changing the category tag of an email according to data in excel
所以我基本上想遍历收件箱中的每封电子邮件,直到 A 列中的主题行与电子邮件的主题行匹配。找到匹配项后,它将沿着 C 列中的同一行查找,并根据此处找到的内容(是、否或多个)更改电子邮件的类别。
在宏具有 运行.
之前,每封邮件都被标记为 "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
这是您正在尝试的吗? (未测试)
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
一样简单。
所以我基本上想遍历收件箱中的每封电子邮件,直到 A 列中的主题行与电子邮件的主题行匹配。找到匹配项后,它将沿着 C 列中的同一行查找,并根据此处找到的内容(是、否或多个)更改电子邮件的类别。
在宏具有 运行.
之前,每封邮件都被标记为 "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
这是您正在尝试的吗? (未测试)
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
一样简单。