Outlook to check for specific text


New Member
Outlook version
Outlook 2016 64 bit
Email Account
Office 365 Exchange
Dear All,

While sending an email I need a outlook code to check a specific text in the body line and if found it do not send the email and just pop up the number of times the text found in the email.

Is it possible to derive a code for this ?
Outlook version
Outlook 2016 32 bit
Email Account
Outlook.com (as MS Exchange)
Hi Sem

The Slipstick website helpfully has the answer for you, in parts. First, check out the "Checking for missing attachments before sending a message" article. Here, you will see the following code snippet:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
   If InStr(1, Item.Body, "attach", vbTextCompare) > 0 Then
        If Item.Attachments.Count = 0 Then
          answer = MsgBox("There's no attachment, send anyway?", vbYesNo)
          If answer = vbNo Then Cancel = True
        End If
   End If
End Sub
The important part of the code is If InStr(1, Item.Body, "attach", vbTextCompare) > 0 Then. The INSTR function will check the body of the email for the word "attach"; if it finds the word, it will return the location of the character in that word within the string being search (item.body). However, this won't give you the number of instances that the search term appears in the email body. You would need to add more code if you wanted to use this approach.

Second, an alternative approach would be to use regular expressions to parse the body of the email. You should look at "Use RegEx to extract text from an Outlook email message". I would suggest putting your code in the Application_ItemSend event, as above, then using the RegEx test method to see if the word/phrase exists in the email body. If it does, then execute the regex, and get the number of matches.

I hope that helps.