Adding GMail’s Archive button to Microsoft Outlook 2007

Recently, I have been using GMail as my primary e-mail client. It’s simple to use, lightweight, fast and powerful. One feature I particularly like is the Archive button, which lets me clear messages out of my inbox with a single click. Instead of letting e-mails clutter up my inbox just in case I need them again, I can archive them as soon as I’ve read them. Fewer items in my inbox makes it easier to focus and prioritize tasks, which in turn makes me more productive.

In the high-pressure environment at work, where I frequently receive up to a hundred or so e-mails a day, everything I can do to make my life easier helps. Here is how I added an Archive button to Microsoft Outlook:

  1. Make a new folder in Outlook called Archive.
  2. Open the macro editor under Tools > Macros > Visual Basic Editor.
  3. Open ThisOutlookSession under Project1 in the Project Explorer window at the left side of the screen.
  4. Paste the following code:
    Option Explicit
    Public Sub ArchiveSelectedItems()
        MoveSelectedItemsToFolder "Archive"
    End Sub
    Private Sub MoveSelectedItemsToFolder(FolderName As String)
        On Error GoTo ErrorHandler
        Dim Namespace As Outlook.Namespace
        Set Namespace = Application.GetNamespace("MAPI")
        Dim Inbox As Outlook.MAPIFolder
        Set Inbox = Namespace.GetDefaultFolder(olFolderInbox)
        Dim Folder As Outlook.MAPIFolder
        Set Folder = Inbox.Folders(FolderName)
        If Folder Is Nothing Then
            MsgBox "The '" & FolderName & "' folder doesn't exist!", _
                vbOKOnly + vbExclamation, "Invalid Folder"
        End If
        Dim Item As Object
        For Each Item In Application.ActiveExplorer.Selection
            If Item.UnRead Then Item.UnRead = False
            Item.Move Folder
        Exit Sub
        MsgBox Error(Err)
    End Sub
  5. Save and close the editor.

Now the archive macro has been created. Let’s add a button that will trigger it:

  1. Click on View > Toolbars > Customize, and select the Commands tab.
  2. Scroll down to the Macros category.
  3. Drag the Project1.ThisOutlookSession.ArchiveSelected command to a toolbar.
  4. Right-click on your new button, and rename it to Archive Selected. Set it to display Text Only.
  5. Click Close.

All done!

17 thoughts on “Adding GMail’s Archive button to Microsoft Outlook 2007

  1. This is so great! I love the Archive feature in GMail, adding this on my outlook will save a lot of time!


  2. I would love to have this function but I get an error

    ” The operation failed. An object could not be found”

    Any clue?

  3. Hi David, let me paste what I said to Koen.

    I’m not sure what could be causing your problem. Are you familiar with
    VB at all? You could try stepping through the macro to see where it

    1. Go to Tools > Macro > Visual Basic Editor. Open up the archive code.
    2. Right click on the line that says ‘MoveSelectedItemsToFolder
    “Archive”‘ and click Toggle > Breakpoint.
    3. Go back to your Inbox and click the ‘Archive’ button. The
    breakpoint should light up and you can press F8 to step through the
    code line by line until it breaks. Right click on variables (e.g.
    Namespace, Inbox, Folder) and click ‘Add Watch’ to see what they are.

    Hope this helps.

  4. I also got this error. To resolve this I had to ensure that I had a folder named Archive located as a SUB FOLDER of Inbox. Once I corrected this, I had no issues.

    Best of Luck.

  5. Hm, it’s not actually the same though. The archive in GMail just removes the mails from the inbox, but preserves all of the mail’s tags. If you just have the inbox and the archive, it works of course, but personally, I tag most of my mails in GMail.

    But then, tagging and folders are entirely different concepts anyway. I can’t imagine going back to such a limited concept as folders are.

  6. The semantics might not be exactly the same, but it achieves the same effect — moving something out of the inbox with one click :)

  7. Koen, David & John. I got this error because my Archive folder was not a subfolder of the Inbox folder (it was up on the same level as my Inbox in the Mailbox level).

    If you drag your Archive folder into your Inbox folder, the macro should work perfectly as it is.

  8. This is a great tip. I was wondering if there was a way that “Archiving” would move the message from the Inbox, to the Inbox in an Archive folder (.pst file loaded into Outlook)? I think then it would truely be “archiving”. Thanks.

  9. No worries, I figured out an archive button already exists in Outlook for Gmail – is’s called the DELETE button! If you delete from your Gmail inbox using an IMAP mail client, the message is removed from the inbox but remains in All Mail, so it is automatically archived.

  10. Has anybody a hint how to use this funciton to move Items into other pst-Files?


Comments are closed.