2017-02-14 70 views
1

我正在尝试从收件箱文件夹中的每封电子邮件中提取发件人的电子邮件地址。我没有任何问题,直到我达到我的文件夹中的每个电子邮件的命令。如果我现在使用代码,我会遇到一个错误,因为olSender不是Dim作为Variant,但如果我将其更改为Dim作为Variant,我无法将其作为Outlook.MailItem调暗以检索senderemailaddress。我假设一个嵌套的For循环是解决方案,我一直在努力寻找答案。 Outlook 2013是该版本。如何从Outlook文件夹中的每个邮件中检索SenderEmailAddress?

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 
+0

尝试'如果Item.Class = olMail Then'后为每个 – 0m3r

回答

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 
+0

谢谢你回答瑞安。我试过你的代码,但是一旦代码到达下一个olSender,我仍然遇到问题。当我将olSender变暗为Variant时,我不再遇到下一个olSender的问题,但是之后我遇到了一个问题,因为我变暗为Variant,它不能也变暗为Outlook.MailItem。 – Jroscoe26

+0

@ Jroscoe26你收到了什么错误? – RyanL

+0

我刚刚在我自己的默认文件夹收件箱中试过,它工作。谢谢你的帮助。 – Jroscoe26

相关问题