首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >宏在主题包含时将msg移动到文件夹。

宏在主题包含时将msg移动到文件夹。
EN

Stack Overflow用户
提问于 2015-07-07 19:18:15
回答 1查看 1.3K关注 0票数 0

我正在处理下面的代码。有时候会起作用。我的意思是,我可以运行测试邮件,它可以做它应该做的事情,但有时我会出错:到目前为止,我收到的两个错误是:“操作失败,找不到目标。”和“商店上没有启用即时搜索”似乎是随机的。我的问题是如何增强代码,以确保它在不出现这些错误的情况下运行?我有程序规定每分钟都要开火。谢谢

代码语言:javascript
运行
复制
Option Explicit

Sub MoveItems()

Dim myNameSpace As Outlook.NameSpace
Dim myInbox As Outlook.Folder
Dim myDestFolderWA As Outlook.Folder
Dim myDestFolderOR As Outlook.Folder
Dim myDestFolderID As Outlook.Folder
Dim myItems As Outlook.Items
Dim myItemWA As Object
Dim myItemOR As Object
Dim myItemID As Object
Dim strFilter1 As String
Dim strFilter2 As String
Dim strFilter3 As String
Dim RestrictItems As Outlook.Items
Dim Mail As Outlook.MailItem

On Error GoTo ErrHandler

Set myNameSpace = Application.GetNamespace("MAPI")
Set myInbox = myNameSpace.Folders("Subpayables Invoices").Folders("Inbox")
Set myItems = myInbox.Items

Set myDestFolderWA = myInbox.Folders("WA")
Set myDestFolderOR = myInbox.Folders("OR")
Set myDestFolderID = myInbox.Folders("ID")


strFilter1 = "@SQL=" & Chr(34) _
& "urn:schemas:httpmail:subject" & Chr(34) _
& " ci_phrasematch 'washington'"

strFilter2 = "@SQL=" & Chr(34) _
& "urn:schemas:httpmail:subject" & Chr(34) _
& " ci_phrasematch 'oregon'"

strFilter3 = "@SQL=" & Chr(34) _
& "urn:schemas:httpmail:subject" & Chr(34) _
& " ci_phrasematch 'idaho'"


Set RestrictItems = myItems.Restrict(strFilter1)
Set myItemWA = RestrictItems.GetFirst

Set RestrictItems = myItems.Restrict(strFilter2)
Set myItemOR = RestrictItems.GetFirst

Set RestrictItems = myItems.Restrict(strFilter3)
Set myItemID = RestrictItems.GetFirst

While TypeName(myItemWA) <> "Nothing"
myItemWA.Move myDestFolderWA
Set myItemWA = RestrictItems.GetNext
Wend

While TypeName(myItemOR) <> "Nothing"
myItemOR.Move myDestFolderOR
Set myItemOR = RestrictItems.GetNext
Wend

While TypeName(myItemID) <> "Nothing"
myItemID.Move myDestFolderID
Set myItemID = RestrictItems.GetNext
Wend
Exit Sub

ErrHandler:
MsgBox Err & ": " & Error(Err)

End Sub
EN

回答 1

Stack Overflow用户

发布于 2015-07-07 19:32:48

我没有得到任何错误,但它没有做我希望它做的事情。

您试过调试代码并查看那里发生了什么吗?你有什么错误吗?

如果一次将大量项添加到文件夹中(超过16项),则无法运行Items类的ItemAdd事件。这是一个众所周知的问题.是这样吗?

您可以考虑处理应用程序类的NewMailEx事件,该事件在收件箱中收到新项时触发。以下是MSDN的声明:

当新消息到达收件箱并在客户端规则处理发生之前,将触发NewMailEx事件。您可以使用EntryIDCollection数组中返回的条目ID来调用NameSpace.GetItemFromID方法并处理该项。使用此方法时要小心,以尽量减少对Outlook性能的影响。但是,根据客户端计算机上的设置,在新邮件到达收件箱后,可以异步地发生垃圾邮件筛选和将新邮件从收件箱移动到另一个文件夹的客户端规则等进程。您不应该假设在这些事件触发后,收件箱中的项目数量总是会增加一项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31277455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档