2014-06-20 3 views
7

Ich versuche, Outlook VBA zu verwenden, um durch den Posteingang zu durchlaufen und die von E-Mail-Adresse auflisten, wenn das Thema mit einer Zeichenfolge übereinstimmt. Haben Sie diese so weit von googeln, aber es funktioniert nicht:Outlook VBA Wie durchlaufen Posteingang und Liste von E-Mail-Adresse wenn Thema entspricht

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 

Jeder weiß, warum ich ein Type Mismatch Fehler, wenn ich das laufen?

+0

In welcher Zeile ist der Fehler enthalten? Atchen? Übrigens, denken Sie daran, dass nicht alle Einträge im Posteingang vom Typ 'MailItem' sind. Wenn dies der Fall ist, löst das einen Mismatch-Fehler in Ihrer 'For Each-Schleife' aus. – L42

Antwort

12

Wie kommentierte versuchen, einen Test für MailItem im Code enthalten:

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: Wie Dmitry vorgeschlagen, können Sie auch:

If Item.Class = 43 Then 

anstelle von

If TypeOf Item Is Outlook.MailItem Then