VBA:使用类别限制方法的替代方法?

标签 vba outlook outlook-2010 outlook-2003

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

来自 Items.Restrict Method (Outlook)

This method cannot be used and will cause an error with the following properties: Categories

我明白了,但是如果您向下滚动到示例,您会得到:

"This Visual Basic for Applications (VBA) example uses the Restrict method to get all Inbox items of Business category and moves them to the Business folder. To run this example, create or make sure a subfolder called 'Business' exists under Inbox. "

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:寻找另一种方法将消息标记为传输/已传输而不是类别

感谢您的帮助,如果需要会发布代码

最佳答案

如果过滤器不起作用,我会反过来做:

  • 选择所有项目(而不是已经过滤的)
  • 检查每个项目是否有您要查找的类别

这看起来像这样:

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 

它可能需要更长的时间来运行,但差异应该不会太差。 我希望这有帮助, 最大

关于VBA:使用类别限制方法的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26003684/

相关文章:

excel - 隐藏行的动态范围

excel - Trim 函数和 WorksheetFunction.Trim 不删除前导或尾随空格

java - 使用 java 将 .msg 转换为 .eml

vba - 循环通过 Outlook 项目的运行时错误

css - 字体大小不适用于 Outlook 2010 中的 <h2> 元素

vba - 双击更改单元格中的字体颜色

excel - 12 :00:00 AM 时拆分日期/时间不起作用

html - 如何定位电子邮件客户端 (Microsoft Outlook) 中的特定链接?

excel - 使用 VB/VBA 搜索 Outlook 邮件并将特定数据提取到 Excel 工作表中

c# - 创建邮件时在 Outlook 加载项 (C#) 中读取 Outlook 附件内容