我的公司刚刚从outlook 2003迁移到2010年。我们有一个紫色标记消息的按钮,另一个通过使用标记过滤器将紫色标记的消息发送到服务器数据库。 [FlagStatus] = 2 由于outlook 2010不再使用旗帜颜色,我将代码更改为使用类别,我成功创建了一个新类别" readyToSend"紫色。问题是我无法使用此新类别过滤所有电子邮件。 微软似乎自相矛盾,我的代码也不起作用。我正在寻找替代方案。
来自Items.Restrict Method (Outlook)
此方法无法使用,并会导致以下错误 特性: 的分类
我明白了,但如果你向下滚动到示例,你会得到:
"此Visual Basic for Applications(VBA)示例使用Restrict 获取业务类别的所有收件箱项并将其移动到的方法 Business文件夹。要运行此示例,请创建或确保a 子文件夹名为' 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 :(得分:0)
如果过滤器不起作用,我会以其他方式进行:
这看起来像这样:
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
运行可能需要一点时间,但差异不应该是坏的。 我希望这有帮助, 最大
答案 1 :(得分:0)
迟到了答案,但我在MSDN blog
找到了一个有效的解决方案需要在MFCMapi中挖掘一下才能获得正确的字符串。
对于约会项目,限制字符串是: &#34; @SQL =&#34;&#34; http://schemas.microsoft.com/mapi/string/ {00020329-0000-0000-C000-000000000046} /关键词&#34;&#34; =&#39;&#34; &安培; sCategoryName&amp; &#34;&#39;&#34;
您需要检查相同的字符串是否适用于消息或挖出正确的字符串。