我很难找到一个必然是一个相当普遍的问题的明确答案?
我的老板在收件箱中为团队成员提供了文件夹,但是他们不想将电子邮件移到那里,直到他们从收件箱中读出来。所以我正在尝试编写一个遵循以下逻辑步骤的宏:
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
你能帮助我把它放在一起吗,我宁愿在海上迷失这个!!
菲尔
答案 0 :(得分:0)
迭代收件箱文件夹中的所有项目并不是一个好主意。您需要使用Items
类的Find / FindNext或Restrict方法来查找与您的条件(读取和发件人名称)对应的所有项目。请阅读以下文章中有关这些方法的更多信息:
然后,您可以使用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文章很有帮助。