2017-06-16 70 views
1

此VB脚本将获取我的Outlook收件箱中的所有电子邮件。Visual Basic Outlook上次写入时间

Sub DetermineLastWriteTime() 
    Dim myNameSpace As Outlook.NameSpace 
    Dim myInbox As Outlook.Folder 
    Dim myItems As Outlook.Items 
    Dim myItem As Object 

    Set myNameSpace = Application.GetNamespace("MAPI") 
    Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox) 
    Set myInboxItems = myNameSpace.GetDefaultFolder(olFolderInbox).Items 

    MsgBox (myInboxItems.LastWriteTime) 
End Sub 

我想确定有没有在ň分钟被修改的电子邮件。带有LastWriteTime函数的消息框产生带有消息的弹出框对象不支持此属性或方法

enter image description here

有一些其他的方式来确定有没有在ň分钟被修改的电子邮件?

回答

2

LastWriteTime似乎不是来自Outlook的财产,所以不知道从哪里来的?

另外,您正在尝试对项目集合调用该对象,而不是对每个项目调用该对象。

尝试类似:

Sub DetermineLastWriteTime() 

    Const NUM_MINS As Double = 20 
    Dim myNameSpace As Outlook.NameSpace 
    Dim myInbox As Outlook.Folder 
    Dim myInboxItems As Outlook.Items 
    Dim myItem As Object, t, mins 

    Set myNameSpace = Application.GetNamespace("MAPI") 
    Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox) 
    Set myInboxItems = myNameSpace.GetDefaultFolder(olFolderInbox).Items 

    For Each myItem In myInboxItems 
     t = myItem.LastModificationTime 
     mins = (Now - t) * (24 * 60) 
     If mins <= NUM_MINS Then 
      Debug.Print t, mins 
     End If 
    Next myItem 


End Sub 
+0

这是一个完美的解决方案! – JeremyCanfield