Outlook VBA 宏通过从类别对话框中选择类别进行搜索

问题描述

我想开发一种在 Outlook 搜索栏上搜索关键字时的自动方法。理想的过程是我可以使用搜索工具热键添加属性(例如 Sent ToReceivercc 等...)我直觉地认为属性或关键字将存在于特定邮件项目上。当我搜索 Sent ToReceivercc效果很好,但是当我想搜索特定类别时会出现一些问题按“类别”。它不会显示完整的类别列表。这里有相关评论

There is a relevant comment here

有图解供实际操作参考。

Illustrated picture for reference

由于我有很多类别来管理我的电子邮件,我希望我可以通过完整类别对话框选择一个类别,并将其输入到 Outlook 搜索栏。然后我可以更快更准确地找到我想要的邮件

这是我对 VBA 代码的初步想法。 (Credit to MarcinSzaleniec):

Sub SearchByInputFromCategoryDialog
  'Open Category Dialog and choose one category
  StringOfCategory = Choosing Text
 
  txtSearch = "category:="category:(StringOfCategory )"
  myOlApp.ActiveExplorer.Search txtSearch,olSearchScopeAllFolders
end Sub

然后类别文本将显示搜索栏上,以便我可以进一步敲击“输入”并开始搜索过程。最后我找到了通讯员的邮件

备注:

我认为类别对话框可能存在问题,因为我无法确定是否存在通过类别对话框获取类别文本的 VBA 方法

我在 Internet 上找到的信息最多 mainly focus on an item or selected item on explorer to add the category by the category dialog,但我想使用的方法按类别对话框获取类别文本

解决方法

您可以从支持类别的对象返回类别。

Option Explicit ' Consider this mandatory
' Tools | Options | Editor tab
' Require Variable Declaration
' If desperate declare as Variant

Sub SearchByInputFromCategoryDialog()

    Dim StringOfCategory As String
    Dim txtSearch As String
    
    Dim obj As Object
        
    'Open Category Dialog and choose one category
    Set obj = CreateItem(olMailItem)
    obj.ShowCategoriesDialog
    StringOfCategory = obj.categories
    Debug.Print StringOfCategory
    
    'txtSearch = "category:=""Red category"""
    'Debug.Print txtSearch
    
    txtSearch = "category:=""" & StringOfCategory & """"
    Debug.Print txtSearch
     
    ActiveExplorer.Search txtSearch,olSearchScopeAllFolders

End Sub