Beginning with Outlook 2007 SP2, Copy: is prefixed to the subject of meetings when they are copied within a calendar or to another calendar.
From the release notes:
"A meeting that is copied from a shared calendar does not indicate that it is a copy. SP2 adds "Copy:" to the subject line."
Copy: was added so users would know how the meeting ended up on the calendar and why it wasn't updating. There is no way to avoid it in Outlook 2007 SP2 or Outlook 2010, except by not copying the meetings. Note that even though the release notes say "copied from a shared calendar", it applies to all copied meetings. Any time you make a copy of a meeting by copying it to a new date, copying it to a second calendar in your mailbox, or export it to a pst, Copy: is added to the subject.
You can edit the subject line or use VBA to remove it.
The Infobar on meeting will say if the meeting was copied. Copy: won't be added back to the subject if you copy it again.
Solutions
The following methods did not add the Copy: prefix to subject lines in my tests:
- If you are using a pst, copy the pst file then move the meetings from the pst copy to the second Outlook. Moving the meetings will preserve their ability to accept or send updates.
- If you are using Exchange server, use Outlook 2003 to export the calendar.
- Create a new pst. Right click on the calendar and choose Copy. Select the new pst as the destination. Outlook will copy the items then complain it can't copy the folder. Open the pst in the second Outlook and move the calendar items.
Use VBA to remove Copy:
Below is a VBA script you can use to cycle through every appointment item in the selected calendar and remove the Copy: prefix. Works in Outlook 2007 and 2010. (Also works in older versions, if you need to mass-edit the subject line.)
Sub RemoveCopy()
Dim myolApp As Outlook.Application
Dim calendar As MAPIFolder
Dim aItem As Object
Set myolApp = CreateObject("Outlook.Application")
Set calendar = myolApp.ActiveExplorer.CurrentFolder
Dim iItemsUpdated As Integer
Dim strTemp As String
iItemsUpdated = 0
For Each aItem In calendar.Items
If Mid(aItem.Subject, 1, 6) = "Copy: " Then
strTemp = Mid(aItem.Subject, 7, Len(aItem.Subject) - 6)
aItem.Subject = strTemp
iItemsUpdated = iItemsUpdated + 1
End If
aItem.Save
Next aItem
MsgBox iItemsUpdated & " of " & calendar.Items.Count & " Meetings Updated"
End Sub
How to use VBA
Select the calendar that needs fixed.
Press Alt+F11 to open the VBA editor. (or Tools, Macro, Visual Basic Editor)- Expand Project1 then double click on ThisOutlookSession to open the code window.
- Copy the code above (click in the text, Ctrl+A to select all, Ctrl+C to copy)
- Paste it into the code window then Save.
- Press the Run button.
To run the code later, press Alt+F8 (or Tools, Macro, Macros), select the RemoveCopy macro and press Run.
More Information
Importing .pst Outlook Calendars (subject title adds Copy:) discussion in Microsoft's Answers forum.
Outlook 2007 improvements in the February 2009 cumulative update
Merging Two Calendar Folders
Move meetings without losing the ability to “Send Update”


Leave a Reply
42 Comments on "Copy: is prefixed to the Subject of a Meeting"
I can't get Outlook 2013 to allow me to run the VBA. I enabled all macros in Outlook Trust Center as you recommended but when I click Alt F11 it does nothing. I do not get any project screen or VBA editor. Is there some other setting I need to change?
Hi Diane. Never mind - I figured it out. User error. Thanks for the information! Worked great.
Your a F"in Genius!!!!!!!!!
Diane , you stride like a colossus through the world of IT
Worked great for me on Outlook 2013 on Windows 8.1
Worked great for me - at least to have the info about 2003. Two remarks about the code though:
strTemp = Mid(aItem.Subject, 7, Len(aItem.Subject) - 6)
The Mid() function defaults to use the entire string, so
strTemp = Mid(aItem.Subject, 7) achieves the same and saves quite a bit of calculation time
aItem.Save : why save each item if nothing was changed? This costs extra time and could affect update times (if any available). Better to put this inside the if/endif clause
We have a client database that we book appointments into which sends an automated email to Outlook. I've modified the above the code to a degree but we just want to be able to remove everything except the last 8 characters of the appointment subject but the appointment subject could be any length of characters long so using the above script doesn't work perfectly in this situation because it counts from the start on the string.
Is there anyway to do this (delete everything except the last 8 characters of the string)?
you'll use len and right functions. Basics are here: http://www.slipstick.com/developer/parsing-text-fields-in-outlook/
something like
item.subject = right(item.subject, len(item.subject) -8)
This does not seem to work on a Spanish language Outlook 2007. If searches but finds nothing. I've change the search keyword from "copy:" to "copiar" but still does not change anything? Any ideas?
Does it work with Copy? (In some situations, Outlook will use the English name, but I don't think it will here but I could be wrong.)
Are you using the same case? The macros are case-sensitive.
Try copying the word from the subject of an appointment and paste it into the macro.
I attempted running this and I get a syntax error at the very first line. I attempted this for Outlook 2013. Is it safe to assume this may not work with 2013 Office products?
It works with Outlook 2013 but I'm guessing the problem is the coding - WordPress sometimes messes up the formatting. The macro has a lot of html code that should be quotes or a simple & instead. I fixed it. Sorry about that. :(