使用 VBA 在 Windows 资源管理器中操作 outlook 消息文件的项目详细信息
Manipulating the item details of an outlook msg file in Windows Explorer using VBA
我从各种网络资源中混合了一个 VBA 脚本,以将 selected Outlook 2013 邮件项目保存为文件系统上的 *.msg 文件。这很好用,但我想向 Windows Explorer (Windows 7) 中显示的项目属性添加内容。
网络搜索抛出了令人困惑的信息,因为大多数人似乎都认为我想更改 CustomProperties 或 BuiltinProperties,但经过很多时间后,DSOfile dll 对其他一些 MS Office 文件的作用似乎正是我需要的.
综上所述,我可以select和运行一个宏来重命名邮件项并将其作为msg文件保存到文件系统。我正在寻找一种方法,让文件系统上的这些项目在 Windows 资源管理器中查看时显示附加信息。也就是说,显示默认资源管理器视图之外的一些信息的附加列。
此信息仅在 Windows Explorer 中允许排序等相关。我不能涉及单独的数据库等。我还需要在 VBA 环境中执行此操作并且无权访问Visio等
例如,Windows 资源管理器可以显示 "Sender address" 和 "Sender name" 列。我想从 VBA 中为 Outlook 2013 消息文件填充这些内容。
这可能吗?如果可以,如何实现?
此功能适用于我的目的。
不完全是最干净的选项,但足够好,因为我可以在资源管理器中的特定列上对项目进行排序。
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
是来自主子的邮件项,保存邮件项后从那里调用此函数。
然后我在 Windows 资源管理器中设置目标文件夹以显示作者和评论列。
也许有"cleaner"个解决方案
必须在 MSG 文件使用的 OLE 存储级别上设置这些额外属性 - StgCreateDocfileOnILockBytes
/ IPropertySetStorage::Create
/ IPropertySetStorage::WriteMultiple
如果使用 Redemption(我是它的作者)是一个选项,它会公开 olMsgWithSummary
格式(类似于 OOM 中的 olMsg
和 olMsgUnicode
)你需要什么。下面的脚本保存当前选择的 Outlook 邮件:
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set oMsg = Application.ActiveExplorer.Selection(1)
set rMsg = Session.GetRDOObjectFromOutlookObject(oMsg)
rMsg.SaveAs "c:\temp\ExtraProps.msg", 1035 '1035 is olMsgWithSummary
我从各种网络资源中混合了一个 VBA 脚本,以将 selected Outlook 2013 邮件项目保存为文件系统上的 *.msg 文件。这很好用,但我想向 Windows Explorer (Windows 7) 中显示的项目属性添加内容。
网络搜索抛出了令人困惑的信息,因为大多数人似乎都认为我想更改 CustomProperties 或 BuiltinProperties,但经过很多时间后,DSOfile dll 对其他一些 MS Office 文件的作用似乎正是我需要的.
综上所述,我可以select和运行一个宏来重命名邮件项并将其作为msg文件保存到文件系统。我正在寻找一种方法,让文件系统上的这些项目在 Windows 资源管理器中查看时显示附加信息。也就是说,显示默认资源管理器视图之外的一些信息的附加列。
此信息仅在 Windows Explorer 中允许排序等相关。我不能涉及单独的数据库等。我还需要在 VBA 环境中执行此操作并且无权访问Visio等
例如,Windows 资源管理器可以显示 "Sender address" 和 "Sender name" 列。我想从 VBA 中为 Outlook 2013 消息文件填充这些内容。
这可能吗?如果可以,如何实现?
此功能适用于我的目的。
不完全是最干净的选项,但足够好,因为我可以在资源管理器中的特定列上对项目进行排序。
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
是来自主子的邮件项,保存邮件项后从那里调用此函数。
然后我在 Windows 资源管理器中设置目标文件夹以显示作者和评论列。
也许有"cleaner"个解决方案
必须在 MSG 文件使用的 OLE 存储级别上设置这些额外属性 - StgCreateDocfileOnILockBytes
/ IPropertySetStorage::Create
/ IPropertySetStorage::WriteMultiple
如果使用 Redemption(我是它的作者)是一个选项,它会公开 olMsgWithSummary
格式(类似于 OOM 中的 olMsg
和 olMsgUnicode
)你需要什么。下面的脚本保存当前选择的 Outlook 邮件:
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set oMsg = Application.ActiveExplorer.Selection(1)
set rMsg = Session.GetRDOObjectFromOutlookObject(oMsg)
rMsg.SaveAs "c:\temp\ExtraProps.msg", 1035 '1035 is olMsgWithSummary