Categorisation of incoming by Regex arouse : Application_NewMail : Byte Val Mismatch

☆樱花仙子☆ 提交于 2019-12-11 01:27:56

问题


I am working for the VBA Macros of Outlook 2010 to filter and categorize incoming emails into different folders. The rule is mentioned in the target When it comes to the implementation and testing, it does prompting error messages boxes instead of successful filtering. Would you please tell me what section under default call Application_NewMail shall proceed ?

Target :

extract words within [this Bracket]

Subject : [ABC] --> create inbox folder ABC

Subject : [CMX] --> create inbox folder ABC

Subject : CMX --> create inbox folder CMX

Subject : INC000000156156 --> create inbox folder INC and sub-folder INC000000156156

Programming Language : VBA Macro

Outlook Version : 2010

Here is my code and I have no clue on how to create folders if empty and assign email to the folder :

Private Sub Application_NewMail()

    Dim olFld As Outlook.MAPIFolder
    Set olFld = Outlook.Session.GetDefaultFolder(olFolderInbox)
    olFld.Items.Sort "[ReceivedTime]", False
    Dim olMail As Outlook.MailItem
    Set olMail = olFld.Items.GetFirst
    MyNiftyFilter olMail
End Sub

Private Sub MyNiftyFilter(Item As Outlook.MailItem)
    Debug.Print Item
    Debug.Print Item.Subject

    Dim Matches As Variant
    Dim RegExp As New VBScript_RegExp_55.RegExp
    Dim Pattern As String

    Dim Email_Subject As String

    Pattern = "(([\w-\s]*)\s*)"

    Email_Subject = Item.Subject

    With RegExp
        .Global = False
        .Pattern = Pattern
        .IgnoreCase = True
    Set Matches = .Execute(Email_Subject)
    End With

        If Matches.Count > 0 Then


        End If

    Set RegExp = Nothing
    Set Matches = Nothing
    Set Item = Nothing

End Sub

回答1:


You either use ItemAdd event https://stackoverflow.com/a/58428753/4539709 or fix your NewMail to simply

Private Sub Application_NewMail()
    Dim Item As Outlook.MailItem
    MyNiftyFilter Item
End Sub

The NewMail event fires when new messages arrive in the Inbox and before client rule processing occurs. If you want to process items that arrive in the Inbox, consider using the ItemAdd event on the collection of items in the Inbox. The ItemAdd event passes a reference to each item that is added to a folder.




回答2:


You Application_NewMail() sub declares but never initializes the Item variable. Use NewMailEx event instead -it passes the new message entry id, whcih you can use to call Application.Session.GetItemFromID.



来源:https://stackoverflow.com/questions/58443172/categorisation-of-incoming-by-regex-arouse-application-newmail-byte-val-mism

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!