A major complaint with Outlook's Conversation view is the inability to split and merge conversations. Some email clients remove the conversation id, some message threads go way off topic and should be split into their own thread.
I'm trying conversation view, but it doesn't seem to allow me to deal with a common issues, such as users creating a new message instead of hitting reply, using a reply to create a new message to someone, or separate threads with the same subject. How can I tell Outlook where they belong?
How can I tell Outlook a new thread is part of the same conversation?
Scenario: Somebody doesn't reply to an e-mail in a conversation, but creates a new e-mail with a new subject. This can also happen when other people in the thread don't use Outlook (losing the conversation ID in the header) or with messages sent to mailing lists. Extra spaces before or after RE: or multiple RE: in the subject can also cause Outlook to create a new thread for certain messages.
How can I tell Outlook these messages to be a new conversation thread?
Scenario: Somebody uses an e-mail in a particular conversation to start what should be a new message thread. For example, instead of using autocomplete or the address book, people click Reply then delete the subject and body from the message to start a new one to that person or group.
How can I tell Outlook the messages are unrelated?
Scenario: Two separate conversation threads have the exact same subject because they were originally produced by an automated system that gives all e-mails the exact same subject line.
While Outlook can't fix any of these problems on it's own, you can use a macro to add a message to a conversation or move one to a new conversation.
These macros require Redemption.
Add Messages to a Conversation
This macro adds messages to a conversation. Select the message that should be added to a conversation, hold shift and select a message in the conversation it belongs in, then run the macro.
This macro was tested in Outlook 2016 and should work in Outlook 2010 and newer. Note that it may not work with all account or data file types. It's highly recommended that you test it on a few messages first, so you can see how it works and verify it works on your account type.
Before and After running the macro:
Sub AddToConversation() On Error GoTo ErrHnd: Dim oNS As Object Dim oRDOSess As Object Dim oRDOItem As Object Dim sEntryID As String Dim sStoreID As String Dim lNumMsgs As Long Set oRDOSess = CreateObject("Redemption.RDOSession") Set oNS = Nothing Set oNS = Outlook.GetNamespace("MAPI") oNS.Logon oRDOSess.MAPIOBJECT = oNS.MAPIOBJECT lNumMsgs = Outlook.ActiveExplorer.Selection.Count If lNumMsgs < 2 Then MsgBox ("To add messages to a conversation, first select a message then select the target conversation and run this macro.") GoTo ErrHnd: End If For i = 1 To (lNumMsgs - 1) With Outlook.ActiveExplorer.Selection(i) strEntryID = .EntryID strStoreID = .Parent.StoreID End With Set objRDOItem = oRDOSess.GetMessageFromID(strEntryID, strStoreID) objRDOItem.ConversationTopic = Outlook.ActiveExplorer.Selection.Item(lNumMsgs).ConversationTopic objRDOItem.Save Next i ErrHnd: Set oNS = Nothing Set oRDOSess = Nothing Set objRDOItem = Nothing Set strEntryID = Nothing Set strStoreID = Nothing lNumMsgs = 0 End Sub
Remove Messages from Threads
This macro removes messages from a conversation. Select the message that should be removed from a conversation then run the macro. By default, the new conversation will use the message subject, but you can enter any subject.
This macro was tested in Outlook 2016 and should work in Outlook 2010 and newer. Note that it may not work with all account or data file types. It's highly recommended that you test it on a few messages first, so you can see how it works and verify it works on your account type.
Before and After running the macro (I added a character to the end of the subject so they would create a new thread):
Sub ChangeConversation() On Error GoTo ErrHnd: Dim oNS As Object Dim oRDOSess As Object Dim oRDOItem As Object Dim sEntryID As String Dim sStoreID As String Dim lNumMsgs As Long Dim sNewConv As String Dim sTmp As String Set oRDOSess = CreateObject("Redemption.RDOSession") Set oNS = Nothing Set oNS = Outlook.GetNamespace("MAPI") oNS.Logon oRDOSess.MAPIOBJECT = oNS.MAPIOBJECT lNumMsgs = Outlook.ActiveExplorer.Selection.count If lNumMsgs < 1 Then GoTo Instructions: End If sNewConv = InputBox("Change the Conversation ID to:", "Change Conversation ID", "subject") If sNewConv = "" Then GoTo Instructions: End If For i = 1 To lNumMsgs With Outlook.ActiveExplorer.Selection(i) strEntryID = .EntryID strStoreID = .Parent.StoreID End With Set objRDOItem = oRDOSess.GetMessageFromID(strEntryID, strStoreID) If UCase(sNewConv) = "SUBJECT" Then sTmp = Outlook.ActiveExplorer.Selection.Item(i).Subject sTmp = Replace(Replace(Replace(Replace(Replace(Replace(sTmp, "RE: ", ""), "FWD: ", ""), "FW: ", ""), "Re: ", ""), "Fw: ", ""), "Fwd: ", "") objRDOItem.ConversationTopic = sTmp Else objRDOItem.ConversationTopic = sNewConv End If objRDOItem.Save Next i GoTo ErrHnd: Instructions: MsgBox ("To change a conversation ID, select the message(s) then run this macro. Enter the new ID, and click OK. NOTE: To change the conversation to the default (to match the subject), enter the word 'subject' as the new ID.") ErrHnd: Set oNS = Nothing Set oRDOSess = Nothing Set objRDOItem = Nothing Set strEntryID = Nothing Set strStoreID = Nothing lNumMsgs = 0 sNewConv = "" sTmp = "" End Sub
Install Redemption
To use Redemption, download the Developer version (it's free for personal use). Run the downloaded file; it will install the 32-bit version and if using 64-bit Windows, the 64-bit version.
Open the Visual Basic Editor (Alt+F11) then go to Tools, References and locate Redemption in the list. Tick the box the close the dialog.
How to use macros
First: You will need macro security set to low during testing.
To check your macro security in Outlook 2010 or 2013, go to File, Options, Trust Center and open Trust Center Settings, and change the Macro Settings. In Outlook 2007 and older, itâs at Tools, Macro Security.
After you test the macro and see that it works, you can either leave macro security set to low or sign the macro.
Open the VBA Editor by pressing Alt+F11 on your keyboard.
To put the code in a module:
- Right click on Project1 and choose Insert > Module
- Copy and paste the macro into the new module.
More information as well as screenshots are at How to use the VBA Editor
More Information
Another macro to merge conversations:
E-Mail: Merge conversation (Michael Bauer)
Dear Diana,
AddToConversation works fine in VBE environment, i.e. when I open the Microsoft Visual Basic for Applications, but nothing happens when I customize ribbon and add macro command to either of tabs of MS Outlook menu and assign a button to it. Any ideas as to why this happens?
Dan
Both AddToConversation & ChangeConversation were working fine in my Outlook 2013, till my Win10 profile corrupted 2 weeks ago. When I tried to re-install these macros, I got some errors. I'm a VBA noob, but could understand that certain lines of the ChangeConversation code were being red-lighted for error. I fixed them largely by guesswork and it's working now âĤ apparently some extra commas & double-quote marks have got added somehow.
Here are the lines:.
Set oRDOSess = CreateObject(","Redemption.RDOSession",")
Set oNS = Outlook.GetNamespace(","MAPI",")
sNewConv = InputBox(","Change the Conversation ID to: ",", ","Change Conversation ID",", ","subject",")
If sNewConv = ",""," Then
sTmp = Replace(Replace(Replace(Replace(Replace(Replace(sTmp, ","RE: ",", ","","), ","FWD: ",", ","","), ","FW: ",", ","","), ","Re: ",", ","","), ","Fw: ",", ","","), ","Fwd: ",", ","",")
MsgBox (","To change a conversation ID, select the message(s) then run this macro. Enter the new ID, and click OK. NOTE: To change the conversation to the default (to match the subject), enter the word 'subject' as the new ID.",")
@Oleg, thanks that is working perfectly. However it is not working for me for the split conversation. I keep getting syntax error. Can you fix that as well
RE: Add Messages to a Conversation. It seems "Show as Conversations" mode in Outlook 2016 does not use "ConversationTopic" attribute for grouping, but it uses "ConversationIndex". So, if you add line
objRDOItem.ConversationIndex = Outlook.ActiveExplorer.Selection.Item(lNumMsgs).ConversationIndex
beforeobjRDOItem.Saveit
the script will work fine.This got it running for me! Outlook365.
Note it's not
<strong>objRDOItem.Saveit</strong> it's
objRDOItem.Save (I know I know, pesky formatting pickiness...)I did exactly as the article, but unfortunately, nothing happens. I'm using Outlook 365.
One thing I'm not sure about the macro security, I could not find the option for low security and I choose notifications for all macros.
Please help, this issue has been bothering me for a long period of time
Is there a way to write these scripts without using Redemption?
Unfortunately I'm on a company network that doesn't allow me to download and install Redemption, but I would like to get this working.
No, unfortunately.. unless you know C# or dephi and mapi.
The macro works as expected but within 2 seconds after merging the emails they are automatically unmerged. Any idea why outlook does this? Steps to reproduce include:
1. Open main email within inbox
2. Select emails within inbox to be merged into main email/conversation
3. Run the macro
4. Confirm that emails were merged
5. See emails automatically unmerged
This used to work in my outlook 2010 but It's no longer available since I installed Outlook 2016. Any help please? I'm suck at vba coding.....
What type of email account? I noticed it doesn't work with my exchange mailbox but seemed to work with others.