2017-02-14 21 views
1

Я пытаюсь вытащить адрес электронной почты отправителя из каждого письма в папке «Входящие». У меня нет проблем до тех пор, пока я не получу команду «Кому» для каждого письма в папке. Если я использую код так, как сейчас, я запускаю ошибку, потому что olSender не является Dim как Variant, но если я изменю его на Dim как Variant, я не могу Dim it как Outlook.MailItem получить senderemailadress. Я предполагаю, что вложенный цикл For - это решение, я просто пытаюсь найти ответ. Версия Outlook - версия.Как получить SenderEmailAddress из каждого почтового элемента в папку Outlook?

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

Try 'Если Item.Class = olMail затем' после за каждого – 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

Спасибо, что ответили Райану. Я пробовал ваш код, но у меня все еще возникает проблема, когда код достигает Next olSender. Когда я тускнею olSender как вариант, у меня больше нет проблемы с Next olSender, но у меня есть проблема, потому что я тускнел как Variant, он также не может быть затемнен как Outlook.MailItem. – Jroscoe26

+0

@ Jroscoe26 Какая ошибка вы получаете? – RyanL

+0

Я только что попробовал это в своей папке с папками по умолчанию, и это сработало. Спасибо за вашу помощь. – Jroscoe26

 Смежные вопросы

  • Нет связанных вопросов^_^