1

会社のドメイン (例: JohnDeer@tractorworld.com) からではなく、件名フィールドに会社の名前が含まれていないすべての受信メールを迷惑メール フォルダに移動したいと考えています。

ここに私がこれまでに持っているものがありますが、数百回の反復後に型の不一致エラーが発生します:

Sub SpamHunter()
    Dim inBox As Folder
    Set inBox = Session.GetDefaultFolder(olFolderInbox)
    MsgBox ("Items Found: " & inBox.Items.count)
    Dim mailItem As mailItem
    Dim b As Long
    Dim mailAddress As String
    Dim mailSubject As String
    Dim mailReceived As Date
    Dim c As Integer
    c = 0

    For Each mailItem In inBox.Items

        c = c + 1

        mailAddress = mailItem.SenderEmailAddress
        mailSubject = mailItem.Subject
        mailReceived = mailItem.ReceivedTime

        b = InStr(mailAddress, "mycompany")
        b = b + InStr(mailAddress, "myothercompany")

        If b < 1 Then
            mailItem.Move (Session.GetDefaultFolder(olFolderInbox).Folders("_Junk"))
        End If


    Next

End Sub
4

1 に答える 1

1

受信トレイのすべてがMailItem. たとえば、会議出席依頼はMailItem.

そのタイプにキャストする前に、アイテムがメールアイテムであることを確認する必要があります。

Dim o as Object
Dim ixItems as Integer
For ixItems = inBox.Items.Count To 1 Step -1
   Set o = inBox.Items.Item(ixItems)
   if TypeName(o) = "MailItem" Then
       Set mailItem = o
       ' loop goes here

        c = c + 1

        mailAddress = mailItem.SenderEmailAddress
        mailSubject = mailItem.Subject
        mailReceived = mailItem.ReceivedTime

        b = InStr(mailAddress, "mycompany")
        b = b + InStr(mailAddress, "myothercompany")

        If b < 1 Then
            mailItem.Move (Session.GetDefaultFolder(olFolderInbox).Folders("_Junk"))
        End If

   End If
Next

また、ヒント: 変数名を型名と衝突させないでください。変数などを呼び出すことをお勧めします。これによりoMailItem、それが型ではなく変数であることは明らかです。

于 2013-09-12T08:39:33.793 に答える