Search code examples
vbaimapoutlook-2016purge

Purge an IMAP folder in Outlook 2016 using VBA


In Outlook 2016 I have connected an IMAP folder. Outlook is configured to mark items as deleted in IMAP folders. This is necessary because I want to process those items, that are marked for deletion seperately. After my macro is completed, that IMAP folder should be purged automatically.

In Outlook there is the ribbon "Folder" with the group "purge". In there is the menu "delete" with an menu item to purge the current folder. I can't find a way to execute the function from a VBA macro.

For Outlook 2010 there is this solution: http://www.vboffice.net/en/developers/purge-deleted-imap-messages/

In Outlook 2016, the findControl method does not find the required control.

Is there any way to purge that folder?

Best solution would be some kind of API function.

Second best would be to simulate a click event on the control of the ribbon. "CommandBars" seems to contain some sort of context menus but not the ribbon controls.

Is it possible to define custom commandbars with standard controls in it? The control id seams to be still "12771".

I very briefly looked into the UI Automation toolkit but have found no good example of how to access the ribbon of a specific application.

Alternatively: can I get access to controls of the quick access toolbar? Adding the correct purge folder control to the quick access toolbar would rely on the user to click on that button at the right moment.


Solution

  • For buttons you can add to a ribbon or the QAT, the idMso can be seen at the end of the text when hovering over the command.

    Sub PurgeFolder_Button_idMso()
    
    ' For buttons you can add to a ribbon or the QAT,
    '  the idMso can be seen at the end of the text when hovering over the command.
    ActiveExplorer.CommandBars.ExecuteMso ("PurgeFolder")
    
    End Sub