我正在开发一个Outlook 2013插件,需要访问当前显示在电子邮件列表窗格中的电子邮件。
我已经搜索了很多,但我只能找到在当前所选文件夹中列出电子邮件的方法:
Outlook.MAPIFolder curFolder = this.Application.ActiveExplorer().CurrentFolder;
Outlook.Items mailItems = curFolder.Items;
MailItem item = mailItems.GetFirst();
如果用户没有应用任何搜索过滤器,这将正常工作;但如果通过即时搜索栏应用过滤器,则此代码将生成相同的MailItem列表,就像未应用过滤器一样。
我想到了两种可能解决这个问题的方法,但找不到任何可用的在线资源。
1)最好,直接读取当前在电子邮件列表窗格中呈现的MailItem列表。
2)或者,读取即时搜索文本框中的值,并使用Items.Find(
)命令将其应用于当前选定的文件夹。
任何指导或解释都将不胜感激;提前谢谢。
答案 0 :(得分:0)
Outlook对象模型不提供对Outlook中显示的过滤器行或项目的任何直接访问。
但是Explorer类提供了CurrentView属性,该属性返回表示当前视图的对象。 View类提供应用于当前视图的Filter属性。
Sub ResetView()
Dim v as Outlook.View
' Save a reference to the current view object
Set v = Application.ActiveExplorer.CurrentView
' v.Filter
End Sub
因此,您可以将过滤器应用于Items集合并获取相同的项目集。