首页 > 解决方案 > 将信息从 Outlook 提取到 Excel

问题描述

我有下面的代码,它为我提供了发件人行、主题行和日期信息,但是有没有办法也可以从收件人行(姓名和电子邮件地址)获取信息。

Sub GetFromOutlook()
    Dim OutlookApp As Outlook.Application
    Dim OutlookNamespace As Namespace
    Dim Folder As MAPIFolder
    Dim OutlookMail As Variant
    Dim I As Integer

    Set OutlookApp = New Outlook.Application
    Set OutlookNamespace = OutlookApp.GetNamespace("MAPI")
    Set Folder = OutlookNamespace.GetDefaultFolder(olFolderInbox).Folders("Mail").Folders("Test")

    I = 1

    For Each OutlookMail In Folder.Items
        If OutlookMail.ReceivedTime >= Range("From_date").Value Then
         Range("eMail_subject").Offset(I, 0).Value = OutlookMail.Subject
         Range("eMail_date").Offset(I, 0).Value = OutlookMail.ReceivedTime
         Range("eMail_sender").Offset(I, 0).Value = OutlookMail.SenderName
         Range("eMail_text").Offset(I, 0).Value = OutlookMail.Body
            I = I + 1
        End If
    Next OutlookMail

    Set Folder = Nothing
    Set OutlookNamespace = Nothing
    Set OutlookApp = Nothing
End Sub

标签: vbaoutlook

解决方案


遍历 MailItem.Recipients 集合中的所有收件人。如果您只需要收件人,请检查 Recipient.Type 属性 - 它可以是 olTo、olCC、olBCC

for each recip in OutlookMail .Recipients
  if recip.Type = olTo Then
     MsgBox recip.Name & ": " & recip.Address
  End If
next

作为旁注,条件 If OutlookMail.ReceivedTime >= Range("From_date").Value永远不会满足 - 您不能对日期时间值使用相等比较,您只能使用一个范围:(value < const1) and (value > const2)


推荐阅读