【问题标题】:Outlook 2013, Outlook 2016 VBA rearrange folders in folders treeOutlook 2013、Outlook 2016 VBA 重新排列文件夹树中的文件夹
【发布时间】:2016-12-16 12:30:02
【问题描述】:

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

【问题讨论】:

标签: vba outlook directory


【解决方案1】:

从 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 周围的任何包装器都允许弥合差距(例如,赎回)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 2018-12-04
    • 2015-04-23
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    相关资源
    最近更新 更多