Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在outlook vba中,如何查找邮件项目的读取日期时间?_Vba_Outlook - Fatal编程技术网

在outlook vba中,如何查找邮件项目的读取日期时间?

在outlook vba中,如何查找邮件项目的读取日期时间?,vba,outlook,Vba,Outlook,我希望能够了解在microsoft outlook中收到的电子邮件被读取的时间/日期 我看不到Outlook保存了这些信息。LastModificationTime似乎也没有反映这一点-当项目标记为已读时(至少在Outlook 2007中)它不会更新 假设这是正确的,我决定将来存储此信息,并创建一个userproperty来反映这一点。我已经用以下代码钩住了mailitem.PropertyChange事件处理程序,但它不是一个非常通用的解决方案-我必须将代码放入我使用的每个Outlook应用程

我希望能够了解在microsoft outlook中收到的电子邮件被读取的时间/日期

我看不到Outlook保存了这些信息。LastModificationTime似乎也没有反映这一点-当项目标记为已读时(至少在Outlook 2007中)它不会更新

假设这是正确的,我决定将来存储此信息,并创建一个userproperty来反映这一点。我已经用以下代码钩住了mailitem.PropertyChange事件处理程序,但它不是一个非常通用的解决方案-我必须将代码放入我使用的每个Outlook应用程序中。有没有更有效的方法

此代码放置在ThisOutlookSession模块中(Outlook已重新启动)
Private,使用事件对象作为Outlook.Explorer
Private WithEvents myItem作为Outlook.MailItem
私有子应用程序_启动()
设置objExplorer=Application.ActiveExplorer
端接头
私有子对象explorer\u SelectionChange()
如果objExplorer.CurrentFolder.DefaultItemType=olMailItem,则
如果objExplorer.Selection.count>0,则
设置myItem=objExplorer.Selection(1)
如果结束
如果结束
端接头
私有子myItem_PropertyChange(ByVal名称为字符串)
'Debug.Print Name&“=”&myItem.UnRead
如果Name=“UnRead”和myItem.UnRead=False,则
将myProperty设置为Outlook.UserProperty
设置myProperty=myItem.UserProperties(“ReadTime”)
如果(myProperty为Nothing),则设置myProperty=myItem.UserProperties.Add(“ReadTime”,olNumber)
myProperty.Value=Now()
我的项目。保存
'Debug.Print格式(myItem.UserProperties(“ReadTime”),“hh:mm:ss dd/mm/yy”)
ElseIf Name=“未读”和myItem.UnRead=True则
myItem.UserProperties(“ReadTime”).Delete
如果结束
'调试。打印

End Sub
您是对的,Outlook对象模型不提供任何有关读取状态的信息(标记为读取的时间)


VBA不是为在多台PC上分发而设计的。您需要开发Outlook加载项。这正是他们被介绍的目的。请参阅开始。

您不能这样做-严格来说,已读/未读状态甚至不是消息的一部分:它是单独存储的。和Exchange公用文件夹存储以每个用户为单位存储该状态

如果设置用户属性,除非调用Save,否则不会持久化该属性,但这将更改上次修改时间