2014-06-20 26 views
7

Gelen kutusu arasında geçiş yapmak için Outlook VBA'yı kullanmaya çalışıyorum ve konu bir dizeyle eşleşiyorsa e-posta adresinden listeleniyorum. Bu şimdiye kadar googling gelen var, ama işe yaramıyor: Bu çalıştırdığınızda bir tür uyuşmazlığı hatası alıyorum nedenOutlook VBA Konu eşleşiyorsa, gelen kutunun ve e-posta e-posta adresinin listesinden nasıl geçilir

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 

bilen var mı?

+0

Misin hangi satırı döndürür atch? Btw, gelen kutusundaki tüm öğelerin 'MailItem' türünde olmadığını unutmayın. Eğer durum buysa, bu sizin 'Her Döngü için 'bir uyumsuzluk hatasını tetikleyecektir. – L42

cevap

12

yorumladığı gibi, kodunuzda MailItemiçin bir test birleştiren deneyin:

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: Dmitry önerdiği gibi, aynı zamanda da kullanabilirsiniz:

If Item.Class = 43 Then 

yerine

If TypeOf Item Is Outlook.MailItem Then 
İlgili konular