如何从outlook文件夹中的每个邮件项检索SenderEmailAddress?

时间:2017-02-14 17:54:14

标签: vba excel-vba outlook outlook-vba outlook-2013

我正在尝试从收件箱文件夹中的每封电子邮件中提取发件人的电子邮件地址。在我到达文件夹中每封电子邮件的For命令之前,我没有任何问题。如果我现在使用代码我遇到错误,因为olSender不是Dim作为Variant,但是如果我把它改为Dim作为Variant我不能把它变暗作为Outlook.MailItem来检索senderemailaddress。我假设嵌套的For循环是解决方案,我只是在努力寻找答案。 Outlook 2013是版本。

Sub ExportToExcel()
'EXCEL
 'Opening Excel workbook

 Dim oXLApp As Object, oXLwb As Object, oXLws As Object
 Dim lRow As Long

On Error Resume Next
    Set oXLApp = GetObject(, "Excel.Application")

    '~~> If not found then create new instance
    If Err.Number <> 0 Then
        Set oXLApp = CreateObject("Excel.Application")
    End If
    Err.Clear
    On Error GoTo 0

 oXLApp.Visible = True

 Set oXLwb = oXLApp.Workbooks.Open("C:\Users\******\Documents\******.xlsm")
 Set oXLws = oXLwb.Sheets("Sheet1")


 oXLws.Range("A" & 1).Select
 'OUTLOOK

 'Opening Outlook folder

 Dim olNS As Outlook.NameSpace
  Dim objOwner As Outlook.Recipient

  Set olNS = Application.GetNamespace("MAPI")
  Set objOwner = olNS.CreateRecipient("*********@email.com")
    objOwner.Resolve

 If objOwner.Resolved Then

 Set BouncedEmailsFolder = olNS.GetSharedDefaultFolder(objOwner, olFolderInbox).Folders("Bounced Emails")


 End If

 Dim olItms As Outlook.Items
 Dim olMail As Variant
 Dim i As Long
 Dim olSender As Outlook.MailItem




 Set olItms = BouncedEmailsFolder.Items

 olItms.Sort ("Subject")


 i = 1

 For Each olSender In olItms

    oXLws.Select
    oXLws.Cells(i, 1).Select
    oXLws.Cells(i, 1).Value = olSender.SenderEmailAddress
    i = i + 1
 Next olSender





Set BouncedEmailsFolder = Nothing
Set olNS = Nothing




End Sub

1 个答案:

答案 0 :(得分:1)

设置为默认收件箱时,您的代码适用于我。 olNS.GetDefaultFolder(olFolderInbox)

我想知道您是否在发布的电子邮件中遇到非邮件内容?您可能想要尝试以下代码,该代码仅检索邮件项目(而不是尝试提取发件人以进行会议请求,任务分配等):

  For Each olSender In olItms
        If TypeOf olSender Is MailItem Then
            oXLws.Select
            oXLws.Cells(i, 1).Select
            oXLws.Cells(i, 1).Value = olSender.SenderEmailAddress
            i = i + 1
        End If
     Next olSender