VBA将读取的电子邮件移动到特定文件夹

时间:2017-04-26 12:16:29

标签: vba sorting email outlook directory

我很难找到一个必然是一个相当普遍的问题的明确答案?

我的老板在收件箱中为团队成员提供了文件夹,但是他们不想将电子邮件移到那里,直到他们从收件箱中读出来。所以我正在尝试编写一个遵循以下逻辑步骤的宏:

For each mailitem in inbox:
    Check if read
      Check sender name
      select case True
        sender name like existing folder name
        move item to corresponding folder name
next mailitem

你能帮助我把它放在一起吗,我宁愿在海上迷失这个!!

菲尔

1 个答案:

答案 0 :(得分:0)

迭代收件箱文件夹中的所有项目并不是一个好主意。您需要使用Items类的Find / FindNextRestrict方法来查找与您的条件(读取和发件人名称)对应的所有项目。请阅读以下文章中有关这些方法的更多信息:

然后,您可以使用MailItem类的Move方法将Microsoft Outlook项目移动到新文件夹。例如:

Sub MoveItems() 
 Dim myNameSpace As Outlook.NameSpace 
 Dim myInbox As Outlook.Folder 
 Dim myDestFolder As Outlook.Folder 
 Dim myItems As Outlook.Items 
 Dim myItem As Object 

 Set myNameSpace = Application.GetNamespace("MAPI") 
 Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox) 
 Set myItems = myInbox.Items 
 Set myDestFolder = myInbox.Folders("Personal Mail") 
 Set myItem = myItems.Find("[SenderName] = 'Eugene Astafiev'") 
 While TypeName(myItem) <> "Nothing" 
  myItem.Move myDestFolder 
  Set myItem = myItems.FindNext 
 Wend 
End Sub

您可能会发现Getting Started with VBA in Outlook 2010文章很有帮助。