首页 > 解决方案 > 如何为邮件获取或分配颜色类别?

问题描述

Dim oSel As Outlook.Selection

    Set oSel = Outlook.Application.ActiveExplorer.Selection

Dim oEmail As Outlook.mailitem

    Set oEmail = oSel.Item(1)

我在网络共享上,想

1) 获取分配给当前选定邮件项目的颜色,即灰色 (olCategoryColorGray=13)(oEmail 被分类为灰色),并且,

2) 为其分配不同的颜色类别,例如红色 (olCategoryColorRed=1)。

您的帮助将不胜感激。

标签: vbacolorsoutlookcategories

解决方案


您需要使用MailItem 类的Categories属性来获取分配给项目的类别列表。类别是已分配给 Outlook 项目的类别名称的分隔字符串。

使用 Category 类的Color属性来获取一个OlCategoryColor常量,该常量指示 Category 对象使用的颜色。OlCategoryColor通过在这些 Category 对象的枚举中指定表示类别颜色的相同常量,您可以为多个类别共享相同的颜色。

 private void EnumerateCategories()
 {
    Outlook.Categories categories = Application.Session.Categories;
    foreach (Outlook.Category category in categories)
    {
       Debug.WriteLine(category.Name);
       Debug.WriteLine(category.CategoryID);
       Debug.WriteLine(category.Color);
    }
 }

 private void AddACategory()
 {
    Outlook.Categories categories = Application.Session.Categories;
    if (!CategoryExists("ISV"))
    {
        Outlook.Category category = categories.Add("ISV",
        Outlook.OlCategoryColor.olCategoryColorDarkBlue,
        Outlook.OlCategoryShortcutKey.olCategoryShortcutKeyCtrlF11);
    }
 }

 private bool CategoryExists(string categoryName)
 {
    try
    {
       Outlook.Category category = Application.Session.Categories[categoryName];
       if(category != null)
       {
          return true;
       }
       else
       {
          return false;
       }
    }
    catch { return false; }
 }

推荐阅读