2014-06-20 10 views
7

Próbuję użyć programu Outlook VBA do przechodzenia przez skrzynkę odbiorczą i wyświetlania adresu e-mail od firmy, jeśli temat jest zgodny z ciągiem znaków. Got to tak daleko od googlowania, ale to nie działa:Outlook VBA Jak przechodzić między skrzynkami odbiorczymi i wyświetlać adresy e-mail z adresu e-mail, jeśli temat jest zgodny z

Dim objNS As Outlook.NameSpace 
Set objNS = GetNamespace("MAPI") 
Set Items = objNS.GetDefaultFolder(olFolderInbox).Items 

Dim oFolder As Outlook.MAPIFolder 
Dim oMail As Outlook.MailItem 
For Each oMail In Items 
    Debug.Print oMail.SenderEmailAddress 
Next 

Ktoś wie dlaczego pojawia się błąd niezgodność typów gdy uruchamiam to?

+0

Która linia zwraca błąd atch? Przy okazji pamiętaj, że nie wszystkie elementy w skrzynce odbiorczej mają typ "MailItem". W takim przypadku spowoduje to błąd niezgodności w 'For Each Loop'. – L42

Odpowiedz

12

Jak zauważył, spróbuj włączenie testu na MailItem w kodzie:

Dim objNS As Outlook.NameSpace: Set objNS = GetNamespace("MAPI") 
Dim olFolder As Outlook.MAPIFolder 
Set olFolder = objNS.GetDefaultFolder(olFolderInbox) 
Dim Item As Object 

For Each Item In olFolder.Items 
    If TypeOf Item Is Outlook.MailItem Then 
     Dim oMail As Outlook.MailItem: Set oMail = Item 
     Debug.Print oMail.SenderEmailAddress 
    End If 
Next 

Edit1: Jak sugeruje Dmitry, można również użyć:

If Item.Class = 43 Then 

zamiast

If TypeOf Item Is Outlook.MailItem Then