使用VBA在Windows资源管理器中处理outlook msg文件的项目详细信息

时间:2015-02-20 14:02:16

标签: vba outlook outlook-vba

我已经从各种Web源中混合了一个VBA脚本,以将选定的Outlook 2013邮件项目保存为文件系统上的* .msg文件。这很好但我想在Windows资源管理器(Windows 7)中显示的项属性中添加内容。

网络搜索引发了令人困惑的信息,因为大多数人似乎都认为我想要更改CustomProperties或BuiltinProperties但是经过很长一段时间后,似乎DSOfile dll对其他一些MS Office文件所做的就是我需要的。< / p>

总之,我可以选择并运行一个宏来重命名邮件项并将其作为msg文件保存到文件系统中。我正在寻找一种方法,使文件系统上的这些项目在Windows资源管理器中查看时显示其他信息。也就是说,其他列显示了默认资源管理器视图之外的一些信息。

此信息仅在Windows资源管理器中与允许排序等相关。我不能涉及单独的数据库等。我还需要在VBA环境中执行此操作,并且无法访问Visio等。​​

例如,Windows资源管理器可以显示&#34;发件人地址&#34;和&#34;发件人姓名&#34;列。我想在VBA中为Outlook 2013 msg文件填充这些内容。

这可能吗?如果可以的话怎么办?

2 个答案:

答案 0 :(得分:1)

此功能适用于我的目的。

不完全是最干净的选项,但足够好,因为我可以在资源管理器中对特定列上的项目进行排序。

Function setFileProps(filePath As String)
    Dim objFile As Object

    Set objFile = CreateObject("DSOFile.OleDocumentProperties")
    objFile.Open(filePath)
    ' Use "Authors" column to hold Sender's Name
    objFile.SummaryProperties.Author = mItem.SenderName
    ' Use "Comments" column to hold Sender's email address 
    objFile.SummaryProperties.Comments = mItem.SenderEmailAddress
    objFile.save

    set objFile = Nothing

End Function

mItem是来自main sub的mailItem,在保存mailitem之后会从那里调用此函数。

然后我在Windows资源管理器中设置目标文件夹以显示“作者”和“注释”列。

也许有“更清洁”的解决方案

答案 1 :(得分:0)

从Windows Vista开始,您需要使用Windows Property System为项目添加额外属性或定义新属性。要从MSG文件中提取属性,您需要自己解析MSG文件(格式为documented)或使用扩展MAPI(C ++或Delphi)打开MSG文件(使用OpenIMsgOnIStg) 。对于VBA,您还可以使用Redemption(包装扩展MAPI以供任何编程语言使用)及其RDOSession。GetMessageFromMsgFile方法。