Outlook 2013,Outlook 2016 VBA重新排列文件夹树中的文件夹

时间:2016-08-10 08:29:51

标签: vba outlook directory

在2007年之后的Outlook版本中,Microsoft添加了在文件夹树中手动排列文件夹的可能性(在Outlook 2007文件夹中按字母顺序排列)。 是否有可能使用VBA来安排文件夹树中的文件夹,例如将文件夹放入包含新电子邮件的顶部? 感谢

1 个答案:

答案 0 :(得分:0)

从Outlook 2013开始,您可以根据需要重新排序文件夹,Outlook会记住订单。关键属性是PR_SORT_POSITION。这是定义:

  

定义PR_SORT_POSITION PROP_TAG(PT_BINARY,0x3020)

当从提供程序请求文件夹时,Outlook将使用此属性作为其排序顺序的一部分,因此提供程序可以处理二进制属性的排序非常重要 - 或者在要求按此属性排序时可以伪造它。 Outlook在决定在可见树中插入节点的位置时也会直接使用此属性,因此当Outlook在文件夹中查找时,提供程序可以返回此属性也很重要。

Outlook将使用第二个属性进行自定义排序:

  

定义PR_SORT_PARENTID PROP_TAG(PT_BINARY,0x3021)

顾名思义,此属性存储一个条目ID,可用于对与其自然父节点不同的节点下的文件夹进行排序。通常,文件夹将在PR_PARENT_ENTRYID表示的文件夹下排序。此属性允许您建议显示不同的父级。

通过适当地预设这些属性,您可以指导Outlook如何对提供程序的文件夹进行排序。如果您允许Outlook写入这些属性,则可以保留用户所需的任何排序顺序。

因此,理论上您可以从VBA设置这些属性。 PropertyAccessor课程可以帮助您完成此类任务。如果您遇到来自OOM的任何限制,您也可以考虑使用低级代码,因此任何围绕扩展MAPI的包装都可以弥补差距(例如,Redemption)。