Let’s say your email management approach is to save important messages to a folder other than your Outlook Inbox. You might save messages from outside vendors to a folder named “Vendor Documents” or messages related to corporate policy to a “Policies” folder. Here’s an Outlook VBA macro that helps to file those messages from your Inbox in a single click:
Sub MoveToFolder(folderName) mailboxNameString = "Mailbox - Firstname Lastname" Dim olApp As New Outlook.Application Dim olNameSpace As Outlook.NameSpace Dim olCurrExplorer As Outlook.Explorer Dim olCurrSelection As Outlook.Selection Dim olDestFolder As Outlook.MAPIFolder Dim olCurrMailItem As MailItem Dim m As Integer Set olNameSpace = olApp.GetNamespace("MAPI") Set olCurrExplorer = olApp.ActiveExplorer Set olCurrSelection = olCurrExplorer.Selection Set olDestFolder = olNameSpace.Folders(mailboxNameString).Folders(folderName) For m = 1 To olCurrSelection.Count Set olCurrMailItem = olCurrSelection.Item(m) Debug.Print "[" & Date & " " & Time & "] moving #" & m & _ ": folder = " & folderName & _ "; subject = " & olCurrMailItem.Subject & "..." olCurrMailItem.Move olDestFolder Next m End Sub
Some customizations are necessary to make this all work for your email system. First, copy-and-paste the program to the Visual Basic Editor in Outlook (which you can open with Alt-F11). You’ll need to create a new VB Module (use the Insert->Module menu choice) to hold the macro if you don’t already have custom Outlook macros defined.
mailboxNameString variable needs to be edited for the name of your Exchange mailbox;
you can usually find the name of your mailbox on the left side of the Outlook window at the top, it starts
with “Mailbox” like in the example above.
Third, you’ll need to add other VBA macros which call the
MoveToFolder() macro with the correct folder name
passed as a parameter. For example, we might create two additional macros one each for the Vendor Documents
and the Policies folders; the macro for Vendor Documents might be called
MTV() and the Policies folder macro
Sub MTV() MoveToFolder ("Vendor Documents") End Sub Sub MTP() MoveToFolder ("Policies") End Sub
(Note, the destination folders should already exist in your Outlook folder list.)
The last step is to assign the macros to Outlook toolbar buttons so you can move the selected messages in
your Inbox to the appropriate folders with a click. If you’re managing multiple destination folders, and you
created multiple macros (one for each folder), you can also create a new toolbar to organize all your
MoveToFolder() macros. Here’s a Microsoft Knowledge Base article that describes how to assign Outlook VBA
macros to toolbar buttons: How to Assign a Macro to a Toolbar Button.
MoveToFolder() macro will work on a single selected message, or a group of messages selected in a sequential
range (with a Shift-Click), or a non-sequential range (with Ctrl-Clicks). Also, an activity message will be
written to the VBA Editor’s Immediate Window (which is opened with Ctrl-G) so you can go-back and view
MoveToFolder() activity. A total win for email convenience, give it a try.