2015-05-22 41 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'循環?另外主題應該是完全匹配?我的意思是他們可以區分大小寫嗎? –

相關問題