2014-09-23 83 views
3

我的公司刚刚从outlook 2003移到2010年。我们有一个紫色标记消息的按钮,另一个使用标志过滤器将紫色标记的消息发送到服务器数据库。 [FlagStatus] = 2 由于Outlook 2010不再使用标记颜色,因此我将代码更改为使用类别,我成功创建了一个具有紫色的新类别“readyToSend”。问题是我无法过滤这个新类别的所有电子邮件。 微软似乎自相矛盾,我的代码无法正常工作。我正在寻找替代品。VBA:替代限制类别的方法?

Items.Restrict Method (Outlook)

不能使用这种方法,并会导致错误有以下 属性: 分类

我得到的,但这时如果你向下滚动的例子你得到:

“This Visual Basic f或应用程序(VBA)示例使用限制 方法获取业务类别的所有收件箱项目并将它们移动到 Business文件夹。要运行此示例,请创建或确保在收件箱下存在一个名为“Business”的子文件夹 。 “

Sub MoveItems() 
    Dim myNamespace As Outlook.NameSpace 
    Dim myFolder As Outlook.Folder 
    Dim myItems As Outlook.Items 
    Dim myRestrictItems As Outlook.Items 
    Dim myItem As Outlook.MailItem 

    Set myNamespace = Application.GetNamespace("MAPI") 
    Set myFolder = _ 
     myNamespace.GetDefaultFolder(olFolderInbox) 
    Set myItems = myFolder.Items 
    Set myRestrictItems = myItems.Restrict("[Categories] = 'Business'") 
    For i = myRestrictItems.Count To 1 Step -1 
     myRestrictItems(i).Move myFolder.Folders("Business") 
    Next 
End Sub 

我不能得到这个代码工作 解决方案1:如果我能得到这个工作,我可以解决我的问题 解决方案2:找到另一种方式来标记的消息传递/转移比类

感谢您的帮助,如果需要的话

+0

当您将类别设置为“Business”时,您使用的示例是将收件箱中的项目移动到名为“Business”的文件夹。 “限制”问题只有在“类别”字段的行为类似于“文本”字段时具有多个类别。那beinh说,你用这个代码得到了什么错误?文件夹“Business”是否存在于同一个邮箱中? – dnLL 2014-09-23 20:17:07

+0

我收到错误执行错误'-2147352567(80020009)无效条件并停在限制线。 Thx max的答复,但我已经通过扔电子邮件后,我只是使用过滤器,所以我不必每次都有人想要标记和发送电子邮件到服务器抛出所有的电子邮件。 – trixrabbit 2014-09-25 13:06:44

+0

对不起,我没有看到你的代表,因为它不低于我的答案。在这种情况下,错误即将到来,“限制线”不是很清楚。也许在代码中设置一个标记...顺便说一句,我的代码工作(Outlook 2013) – Max 2014-09-29 20:04:10

回答

0

如果过滤器不工作会后的代码,我会做全面的其他方式:

  • 选择所有项目(的已过滤istead)
  • 检查是否有您正在寻找

找到该会看关于这样每个项目:

Set myItems = myFolder.Items 
''=> this we leave away''Set myRestrictItems = myItems.Restrict("[Categories] = 'Business'") 
For i = myItems.Count To 1 Step -1 
    if instr(myItems(i).Categories, "readyToSend") <> 0 then myItems(i).Move myFolder.Folders("Business") 
Next 

可能需要稍微长一点跑,但差异不应该坏。 我希望这有助于 最大

+0

性能方面,这可能是一个问题(用户有很多(数百或数千)邮件(例如,后长期缺席)。 – dnLL 2014-09-25 13:08:45

0

有点晚了一个答案,但我发现在MSDN blog

工作的解决方案,它需要一个位MFCMAPI挖得到正确的字符串。

对于约会项目,该限制的字符串是: “@ SQL =”” http://schemas.microsoft.com/mapi/string/ {00020329-0000-0000-C000-000000000046} /关键字 “”=“” & sCategoryName & “'”

你需要检查相同的字符串是否适用于消息或挖出正确的字符串。