【问题标题】:Get the latest date of email in a folder获取文件夹中电子邮件的最新日期
【发布时间】:2015-12-05 00:00:07
【问题描述】:

如何在包含电子邮件的文件夹中获取最新日期?

VBA-Outlook 中是否有获取电子邮件最新日期的方法?

例如:我在文件夹中有三封内容相同但接收时间不同的邮件。如何获取三人的最新邮件?

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

    您可以按降序对Items 集合进行排序:

    Set colItems = objFolder.Items
    colItems.Sort "ReceivedTime", True
    

    使用GetFirst 方法检索第一项。此项目的日期是文件夹中的最新日期。

    为空文件夹和意外类型的项目添加一些错误检查。

    【讨论】:

    • @Axel Kemper。谢谢。但是 colItems 是一个什么样的变量呢?它是整数还是 Outlook.item?
    • ++ 但是你不需要GetFirst
    • GetFirst 返回“无”,如果集合为空。在这种情况下,Item(1) 会抛出“索引越界”错误。基本上,口味问题。而且我通常不记得项目的索引是从零开始还是从一开始。
    【解决方案2】:

    我会这样做

    Sub Sample()
        Dim objNS As NameSpace
        Dim objFolder As MAPIFolder
        Dim myItems As Items
        Dim myItem As MailItem
    
        Set objNS = GetNamespace("MAPI")
        Set objFolder = objNS.GetDefaultFolder(olFolderInbox)
    
        Set myItems = objFolder.Items
        myItems.Sort "ReceivedTime", True
    
        If myItems.Count > 0 Then
            Set myItem = myItems.Item(1)
    
            Debug.Print myItem.ReceivedTime
        Else
            Msgbox "This folder doesn't have any emails/items"
        End If
    End Sub
    

    【讨论】:

    • 感谢@Siddhart Rout。但它会收到日期最旧的电子邮件。我在哪里放置 myItems.Sort “ReceivedTime”?是在 For Each 语句之前循环遍历每封电子邮件还是在 For Each 语句内部?
    • 你没有使用 For 循环 :) 1 你确定你设置了正确的文件夹 "Set objFolder = objNS.GetDefaultFolder(olFolderInbox)"
    • 按原样复制我的代码并将其粘贴到 Outlook 中。根据需要更改文件夹,然后运行代码
    • 是的。我使用 For Each 是因为我必须遍历每封邮件并打开最新的邮件。
    • 但这就是我想告诉你的......你不需要循环。就打开该电子邮件而言,您可以使用myItem
    猜你喜欢
    • 1970-01-01
    • 2012-09-24
    • 2019-09-13
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    相关资源
    最近更新 更多