First Published 26 Jan 2024
Creating meetings and appointments in Outlook is very straightforward.
For online meetings hosted in Microsoft Teams or Zoom, you can use the ribbon menu items to include the connection details and then send invitations to all participants.
It is also easy to setup a series of regularly repeating events where the recurrence fits a regular schedule.
For example, every Friday at 15:00 or the first Wednesday of each month at 18:00.
However, it is less obvious how to create copies of appointments / meetings where there is no defined pattern.
The easiest way to copy an appointment is to hold down the Ctrl key whilst you drag the appointment to a new day/time.
NOTE:
Doing this without holding down the Ctrl key will instead MOVE the appointment to the new date/time.
In the past, you could also copy meetings in exactly the same way. However, from version 2311 onwards, this action is blocked and this error message appears:
Following an exchange in a thread at Access World Forums
Outlook Calendar event replication, I am very grateful to AWF member Kitayama for alerting me to this Microsoft Outlook help article:
Outlook blocks copying meetings with “Copying meetings is not supported.”
As the article makes clear, it wass a deliberate decision to block copying of meetings in version 2311 as doing so can apparently cause unspecified 'unexpected errors'.
More helpfully, the article also states how to restore the earlier functionality by adding a new DWORD registry key called EnableMeetingCopy with value = 1 to the path:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\Options\Calendar
The easiest way of doing this is using a registry script.
Copy the code below into a text editor such as Notepad. Save the file as e.g. OutlookMeetingFix.reg and close it.
Then run the script either by double clicking the file (or right click and select Merge)
CODE:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\Options\Calendar]
"EnableMeetingCopy"=dword:00000001
If you are not comfortable with editing the registry, you can instead use the following approach (also suggested by Kitayama and reproduced here with permission)
Create a Copy Appointment ribbon item
1. Open Outlook and press Alt+F11 to launch the Visual Basic Editor (VBE)
2. Open the VBE using Alt+F11 and add a new module. Copy the code below into the module:
CODE:
Sub CopyAppointment()
Dim objOL As Outlook.Application
Dim objSelection As Outlook.Selection
Dim objItem As Object
Dim result As String
Dim dt As String
Set objOL = Outlook.Application
dt = InputBox("Enter the new Date and Time . . . ")
If Not IsDate(dt) Then
MsgBox dt & " Is not a date."
Exit Sub
End If
'Get the selected item
Select Case TypeName(objOL.ActiveWindow)
Case "Explorer"
Set objSelection = objOL.ActiveExplorer.Selection
If objSelection.Count > 0 Then
Set objItem = objSelection.Item(1)
Else
result = MsgBox("No item selected. Please make a selection first.")
Exit Sub
End If
Case "Inspector"
Set objItem = objOL.ActiveInspector.CurrentItem
Case Else
result = MsgBox("Please make a selection in the Calendar or open an item first.")
Exit Sub
End Select
Dim olAppt As Outlook.AppointmentItem
Dim olApptCopy As Outlook.AppointmentItem
Set olApptCopy = Outlook.CreateItem(olAppointmentItem)
' Start Copy
If objItem.Class = olAppointment Then
Set olAppt = objItem
With olApptCopy
.Start = CDate(dt)
.End = CDate(dt)
.Subject = olAppt.Subject
.Location = olAppt.Location
.Body = olAppt.Body
.Categories = olAppt.Categories
.AllDayEvent = olAppt.AllDayEvent
End With
'Display copied item for editing before saving
olApptCopy.Display
'OR save copied item direct to calendar
' olApptCopy.Save
Else
'Selected item isn't an appointment item
result = MsgBox("Please make a selection in the Calendar or open an item first.")
Exit Sub
End If
Set objOL = Nothing
Set objItem = Nothing
Set olAppt = Nothing
Set olApptCopy = Nothing
End Sub
3. Close the VBE and return to Outlook.
4. Open the Outlook calendar
5. Click File -> Options (From the Calendar menu . . . Not the Outlook Menu)
6. Select Customize Ribbon, Select Macros, Select All Tabs and under Appointment tab add a new Group.
7. Add CopyAppointment macro to this group, rename both group and macro name to something you prefer. You can also change the icon while renaming.
8. Click OK and close the Options dialog
Typical usage:
1. Open the calendar, click and select an appointment.
2. Click the Copy Appointment button in the ribbon to open an input box
3. In the input box, type a date or date/time value (e.g. 2024/01/25 08:00)
4. The selected appointment will now be opened for editing if necessary e.g. add an end time
5. Save and Close to add the new appointment or meeting to your calendar
If preferred, you can change olApptCopy.Display in the code to olApptCopy.Save.
Doing this will omit step 4 and add the appoinment at the specified start time, but with no end time / duration.
Click to download:
Module code:
modCopyAppointment .bas file (zipped)
Registry script:
OutlookMeetingFix .reg file (zipped)
Feedback
Please use the contact form below to let me know whether you found this article interesting/useful or if you have any questions/comments.
Please also consider making a donation towards the costs of maintaining this website. Thank you
Colin Riddington Mendip Data Systems Last Updated 26 Jan 2024
Return to Code Samples Page
|
Return to Top
|