问题描述
我想开发一种在 Outlook 搜索栏上搜索关键字时的自动化方法。理想的过程是我可以使用搜索工具热键添加属性(例如 Sent To、Receiver、cc 等...)我直觉地认为属性或关键字将存在于特定邮件项目上。当我搜索 Sent To、Receiver 和 cc 时效果很好,但是当我想搜索特定类别时会出现一些问题按“类别”。它不会显示完整的类别列表。这里有相关评论。
有图解供实际操作参考。
由于我有很多类别来管理我的电子邮件,我希望我可以通过完整类别对话框选择一个类别,并将其输入到 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