How to automatically flag emails based on specific attachment in outlook?
When receiving some emails with specific important attachment, you may need to flag them out, so that, you can quickly and easily find them for flow-up. This article, I will talk about an easy way to automatically flag the emails which attachments with specific names.
Automatically flag emails based on specific attachment with VBA code
Automatically flag emails based on specific attachment with VBA code
To auto flag the emails which contain the specific attachment, please apply the following VBA code:
1. Launch the Outlook, and then hold down the ALT + F11 keys to open the Microsoft Visual Basic for Applications window.
2. In the Microsoft Visual Basic for Applications window, double click ThisOutlookSession from the Project1(VbaProject.OTM) pane to open a new mode, and then copy and paste the following code into the blank module.
VBA code: Auto flag the emails based on specific attachment:
Public WithEvents GMailItems As Outlook.Items
Private Sub Application_Startup()
Set GMailItems = Outlook.Application.Session.GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub GMailItems_ItemAdd(ByVal Item As Object)
If Item.Class <> olMail Then Exit Sub
FlagEmail_SpecificAttachments Item
End Sub
Sub FlagEmail_SpecificAttachments(Mail As Outlook.MailItem)
Dim xAttachment As Outlook.Attachment
Dim xExt As String
Dim xFileName As String
If Mail.Attachments.Count = 0 Then Exit Sub
For Each xAttachment In Mail.Attachments
xExt = SplitPath(xAttachment.FileName, 2)
xFileName = SplitPath(xAttachment.FileName, 1)
Select Case xExt
Case "txt", "xlsx", "docx", "pdf" 'Add the file extension as you need
If InStr(LCase(xFileName), LCase("KTO")) > 0 Then 'Change the text of the attachment name
With Mail
.ReminderSet = True
.ReminderTime = Now + 1
.MarkAsTask olMarkTomorrow
.Save
End With
End If
End Select
Next
End Sub
Public Function SplitPath(FullPath As String, ResultFlag As Integer) As String
Dim xSplitPos As Integer, xDotPos As Integer
xSplitPos = InStrRev(FullPath, "/")
xDotPos = InStrRev(FullPath, ".")
Select Case ResultFlag
Case 0
SplitPath = Left(FullPath, xSplitPos - 1)
Case 1
If xDotPos = 0 Then xDotPos = Len(FullPath) + 1
SplitPath = Mid(FullPath, xSplitPos + 1, xDotPos - xSplitPos - 1)
Case 2
If xDotPos = 0 Then xDotPos = Len(FullPath)
SplitPath = Mid(FullPath, xDotPos + 1)
Case Else
Err.Raise vbObjectError + 1, "SplitPath Function", "Invalid Parameter!"
End Select
End Function
Note: In the above code, you can change the file extension and attachment file name to your need.
3. Then save the code, and restart the Outlook to make the code take effect, now, when receiving the emails which attachments’ names contain the specified text, Outlook will auto flag this email for follow-up, see screenshot:
Kutools for Outlook - Brings 100 Advanced Features to Outlook, and Make Work Much Easier!
- Auto CC/BCC by rules when sending email; Auto Forward Multiple Emails by custom; Auto Reply without exchange server, and more automatic features...
- BCC Warning - show message when you try to reply all if your mail address is in the BCC list; Remind When Missing Attachments, and more remind features...
- Reply (All) With All Attachments in the mail conversation; Reply Many Emails in seconds; Auto Add Greeting when reply; Add Date into subject...
- Attachment Tools: Manage All Attachments in All Mails, Auto Detach, Compress All, Rename All, Save All... Quick Report, Count Selected Mails...
- Powerful Junk Emails by custom; Remove Duplicate Mails and Contacts... Enable you to do smarter, faster and better in Outlook.

