【问题标题】:Extract recipient from last item in sent mail folder in Outlook从 Outlook 中已发送邮件文件夹中的最后一项中提取收件人
【发布时间】:2015-06-12 01:48:40
【问题描述】:

我正在尝试从 Outlook 发送的最后一封电子邮件中检索收件人的姓名。

使用 Items.GetLast 方法返回主题行,但我需要收件人的姓名。

我尝试遍历已发送文件夹中的每个项目,并将信息提取到 Excel 中的电子表格中,如下所示:

    For Each olMail In olFolder.Items
    For Each olRecipient In olMail.Recipients
        Cells(lngRow, 1) = olRecipient.Name
        Cells(lngRow, 2) = olRecipient.Address
    Next
    lngRow = lngRow + 1
Next
Else

我遇到的问题是当发送的项目不是 olMail 类型时,例如会议请求响应。我最终得到一个运行时错误 13 类型不匹配。

出于我的目的,我知道发送的最后一封电子邮件将始终是我需要从中获取收件人姓名的那封,因此查看已发送邮件中的每个项目没有多大意义文件夹并抓住最后一个。有没有办法返回最后发送的邮件并提取收件人姓名?

我将从 Excel 工作簿执行此命令。

谢谢。

【问题讨论】:

    标签: excel vba email outlook


    【解决方案1】:

    您假设 Items.GetLast 将返回最后发送的项目。除非您明确调用 Sort(),否则 Items 集合不会以任何特定方式排序:

    set oItems = olFolder.Items
    oItems.Sort("[SentOn]")
    

    其次,GetLast()不是返回的是一个字符串,它返回的是一个对象,可以是MailItem、MeetingItem等。如果需要处理不同种类的项目,将项目声明为一个通用对象,然后检查 Class 属性。常规消息将是 43 (olMail):

    dim oItem As Object
    set oItem = oItems.GetLast
    if oItem.Class = 43 Then 
      ...
    End If
    

    【讨论】:

      【解决方案2】:

      您可以只检查项目类型以避免run-time error 13 Type mismatch

      If TypeOf olMail is MailItem Then
         ...
      End If
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多