vba - 如何完全删除文件夹的自定义字段/用户定义属性?
问题描述
要将Items.Sort
方法与自定义字段一起使用,我首先UserProperty
在一些邮件项中添加了一个新的:
Set oUserProp = oSentItem.UserProperties.Add("AAA", OlUserPropertyType.olText, AddToFolderFields:=False, _
DisplayFormat:=OlFormatText.olFormatTextText)
oUserProp .Value = "AAA"
由于我使用AddToFolderFields:=False
了 ,然后我将相同的属性添加到 Sent 文件夹:
Set oUserDefinedProp = oNS.GetDefaultFolder(OlDefaultFolders.olFolderSentMail).UserDefinedProperties.Add( _
Name:="AAA", Type:=OlUserPropertyType.olText, DisplayFormat:=OlFormatText.olFormatTextText, Formula:="")
然后检索我使用的邮件:
oSentItems.Sort Property:="AAA", Descending:=False
Set oSentItem = oSentItems.GetLast
oSentItems.Sort Property:="[AAA]", Descending:=False
Set oSentItem = oSentItems.GetLast
我做了几次这个测试,使用“AAA”和“[AAA]”作为属性名称,我还在 Outlook UI 的已发送文件夹视图中直接添加了一个名为“AAA”的新列。
我删除了UserDefinedProperty
,oSentFolder.UserDefinedProperties
和oSentFolder.UserDefinedProperties.Count = 0
. 但是,在 MFCMAPI 中,在Sent Folder > Table > Set columns... > Property Tag Array下,我无法摆脱相应的命名属性,这些属性显然在字符串命名空间(PS_PUBLIC_STRING 属性集)中有一个 proptag 和一个名称. 我试图从 MFCMAPI 中删除它们,然后单击确定,但它们每次都会回来。
从 Outlook VBA 我尝试了以下,但找不到属性。
oSentFolder.PropertyAccessor.DeleteProperty "http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/AAA"
oSentFolder.PropertyAccessor.DeleteProperty "http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/[AAA]"
oSentFolder.PropertyAccessor.DeleteProperty "http://schemas.microsoft.com/mapi/proptag/0x8750001F"
oSentFolder.Items.ResetColumns
我不能使用 OutlookSpy,只有不需要安装的 MFCMAPI。
解决方案
即使您从文件夹字段中删除该属性(这样现在 Outlook 无法识别该属性名称),它仍可能在邮件中设置。
即使您从设置了属性的所有消息中删除该属性,存储仍然会记住属性映射,因此如果您创建具有相同 id/GUID 的属性,它将被映射到相同的 int 属性标记。
推荐阅读
- ibm-cloud - 如何在 IBM Watson 中以句点格式响应 @sys.time ?
- python - 将日期差异转换为整数
- assembly - 为什么在许多 arm64 程序的程序结束之前有 ab (branch) 指令?
- mysql - 显示介于两者之间的所有日期
- docker-compose - Celerybeat 仅在我使用 app.control.purge() 时发送任务?
- html - 页面上嵌入的 iFrame 在任何页面中都不可点击
- node.js - 将文件上传到 Amazon S3 时出现访问被拒绝错误
- rebus - 使用 RabbitMQ 的 Rebus 单例连接
- java - 如何使用 Spring Boot 创建 JSF 应用程序
- node.js - node.js 上的 cocoSsd 无法识别 Tensorflow-node