Обнаружение, если электронная почта не является приглашением календаря - PullRequest
0 голосов
/ 26 июня 2019

У меня есть код, который импортирует электронные письма в форму. Тем не менее, он пойман на календаре приглашает таких. В ответ я хотел бы отфильтровать все эти приглашения в календари, чтобы они даже не пытались импортировать в первую очередь. Вот код, который у меня есть:

    Dim SenderCheck As String
'Build the list selection box
j = 0
For i = 1 To Emails.Count
    With ListBox_Emails
    If TypeName(Item) = "MailItem" Then
    SenderCheck = Emails(i).Sender.Address
    If InStr(1, SenderCheck, "express-scripts.com") > 0 Then
        .AddItem Emails(i).Sender
        .List(j, 1) = Emails(i).Subject
        .List(j, 2) = Emails(i).ReceivedTime
        .List(j, 3) = "N"
        j = j + 1
        Else: MsgBox "error"
        End If
    Else: MsgBox "not mail item"
    End If
            End With
    On Error GoTo TEMP

Проблема связана со строкой If TypeName(Item)="MailItem" then, так как теперь все считается не почтовым отправлением, и я получаю сообщение об ошибке «Не почтовое сообщение».

Как бы я решил эту проблему? Я думаю, что синтаксис неправильный, но я не могу понять, как его исправить.

1 Ответ

1 голос
/ 26 июня 2019

Это прекрасно работает для меня. Пропускает календарь приглашений

Option Explicit

Sub Sample()
    Dim OutApp As Object
    Dim oMail As Object, Item As Object
    Dim objNS As Object, olFolder As Object

    Set OutApp = CreateObject("Outlook.Application")
    Set objNS = OutApp.GetNamespace("MAPI")
    Set olFolder = objNS.GetDefaultFolder(6) '<~~ olFolderInbox = 6

    For Each Item In olFolder.Items
        'https://docs.microsoft.com/en-us/office/vba/api/outlook.olobjectclass
        If Item.Class = 43 Then
            Set oMail = Item
            Debug.Print oMail.Subject
            Debug.Print oMail.SenderEmailAddress
        End If
    Next
End Sub
...