VBA - working with Outlook videos | Excel VBA Part 29.9 - Finding Outlook Emails using Filters

Posted by Andrew Gould on 29 April 2019

In this video you'll learn how to use the Find method and filters in Outlook to search for an email by sender name and subject. You'll learn how to retrieve a list of items from the Outlook inbox, how to apply the Find method to the Items collection and how to construct a filter string to get a reference to a single item in the collection. You'll also learn of a potential issue with the subject of replies and forwarded messages as well as how to deal with the problem. Finally, you'll learn how to copy the body of an email into an embedded Word document in an Excel worksheet.

You can download any files that you need to follow the video here.

You can increase the size of the video:

Full screen mode for YouTube

You can view the video in full screen mode as shown on the left, using the icon at the bottom right of the frame.

You can also increase the quality of the video:

Changing resolution

You can improve the resolution of the video using another icon at the bottom right of the frame. This will slow down the connection speed, but increase the display and sound quality. This icon only becomes visible when you start playing the video.

Finally, if nothing happens when you play the video, check that you're not using IE in compatibility view.

This page has 1 thread Add post
30 Apr 19 at 07:03

You are awesome as always. Better than most of the Excel MVP's. I appreciate your effort for these valuable videos and i have a question for you which i can't find a decent solution at internet. First one, how can we change the from email address when we send an email if we have more than one account in Outlook. Second one is, how we can define folder(fol as outlook.folder) variable in late binding. Thanks in advance.

30 Apr 19 at 07:22

Thanks, glad you enjoyed the video!

You can use the SendUsingAccount property of a MailItem object to send from a separate account in the same Outlook profile, you can see the documentation for that property here.

For late-binding, you can use the generic Object type when you declare variables whose types are defined in the Outlook object library.  Here's some basic code to loop over the Inbox items using late-binding:

Sub LateBindEg()

    Dim ol As Object
    Dim ns As Object
    Dim fol As Object
    Dim i As Object
    
    Set ol = CreateObject(Class:="Outlook.Application")
    Set ns = ol.GetNamespace("MAPI")
    Set fol = ns.GetDefaultFolder(6)    'olFolderInbox = 6
    
    For Each i In fol.Items
        Debug.Print i.Subject
    Next i
    
End Sub

I hope that helps!