Solved Office 2021 - Outlook Calendar event replication

The_Doc_Man

Immoderate Moderator
Staff member
Local time
Yesterday, 23:53
Joined
Feb 28, 2001
Messages
28,687
Finally got Office 2021 up and running after a minor licensing issue. That is a long story and it was resolved with the vendor, non-techie issue.

My wife has some physical therapy that I want to put on my calendar. The appointments are non-regularly recurring, so I can't use the "recurring event" options. I hand-entered the January list this time, but what I want to do is to be able to pick an event and COPY it to another date/time in the same calendar - WITHOUT losing the original. I had a way to do this in Office 2010 but my web searches all turn up "copy to another calendar." Cut-paste doesn't seem to work either because CTRL-C/CTRL-V seemed to have no effect. Unless I did it from the wrong view.

Anyone have any insights?
 
Haven't gotten that far. But I was hoping to do this manually.
 
Finally got Office 2021 up and running after a minor licensing issue. That is a long story and it was resolved with the vendor, non-techie issue.

My wife has some physical therapy that I want to put on my calendar. The appointments are non-regularly recurring, so I can't use the "recurring event" options. I hand-entered the January list this time, but what I want to do is to be able to pick an event and COPY it to another date/time in the same calendar - WITHOUT losing the original. I had a way to do this in Office 2010 but my web searches all turn up "copy to another calendar." Cut-paste doesn't seem to work either because CTRL-C/CTRL-V seemed to have no effect. Unless I did it from the wrong view.

Anyone have any insights?
@The_Doc_Man I've not been using Outlook calendar for years. But when I did, I used the following method to copy an appointment to another date.

Preparation:
  1. Open Outlook and press Alt+F11 to launch VBA Editor
  2. In VBE, Add a new module (It's the same as Access)
  3. Copy and Paste the code at the bottom of this post into the module.
  4. Close VBE and return to Outlook.
  5. open Outlook calendar
  6. Click File -> Options (From calendar menu. Not Outlook Menu)
  7. Select Customize Ribbon, Select Macros, Select All Tabs and under Appointment tab add a new Group, Add CopyAppointment macro to this group, rename both group and macro name to something you prefer. You can also change the icon while renaming.

    3.png
  8. Click OK and close options
4.png


How to use it :
  1. In calendar, click and select an appointment.
  2. Click the button you just added to tab
  3. In input box, type a date or datetime value (2024/01/25 08:00)
  4. Selected appointment will be copied to the destination date.

Important : You can omit time and input only Date too.

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("Input a Date....")
    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
         olApptCopy.Save

    'Selected item isn't an appointment item
    Else
        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
 
Last edited:
If you change
olApptCopy.Save
to
olApptCopy.Display

you can show the detail view before saving. Then you have to click Save button in ribbon to save.

Also, Under olAppCopy type . and check the intellisense. There are a lot of other items you can set.
 
@The_Doc_Man I wasn't aware of it. Just noticed I can drag and drop appointments to copy them.
  1. Open calendar (for the sake of test monthly view)
  2. click an appointment to select it
  3. drag the appointment and drop it to another day using mouse RIGHT button. Be careful. Drag and drop normally is done with left mouse button. In calendar it should be right button.
  4. Select either Copy, Move or Cancel options.
 
@The_Doc_Man I have a database I built a long time ago for my husband to record his blood sugar readings. Over time it grew. It doesn't have an actual calendar but it does have an option for tracking doctor visits and since it is Access, you can manipulate it to suit your needs. It handles multiple people so both you and your wife can use it. But the doctors are shared.

By default the visits form is in descending order and upcoming visits are colored so they stand out. It can't give you warnings unless you open it but I think it might ultimately be more useful than Outlook, especially if you want to be able to review history or make reports. For example, I track my blood pressure and bring in a report when I go for a regular doctor visit. Also helps to be able to print out a current drug list or vaccination list, etc.
 

Attachments

After getting the opportunity, I must thank @KitaYama for the right-click drag'n'drop as the method I needed for the situation at hand. I am marking this one closed.
 
I have for many years used drag & drop to copy appointments.
HINT: You can also do with using the left mouse button. If you hold down the CTRL key with the left mouse button whilst you drag it will copy the appointment. Otherwise, it will move it.

However, you can't use drag & drop to copy meetings. You can move them but attempting to copy them results in an error

1706101264196.png


My thanks also to @KitaYama for that code which does allow me to copy meetings. Two minor points:
  • the string variable res should be Result
  • using olApptCopy.Save results in an appointment with end time = start time. Replacing with olApptCopy.Display is better as you can edit the times before saving
The only improvement I'd like to see is for a date/time dialog popup instead of an input box. If any one has code for that it would be great
 
using olApptCopy.Save results in an appointment with end time = start time. Replacing with olApptCopy.Display is better as you can edit the times before saving
Yes, As I said in #5, I used to use .Display, but after a while I was tired of clicking the save button. So I changed it to Save.

The only improvement I'd like to see is for a date/time dialog popup instead of an input box. If any one has code for that it would be great
@isladogs I will search to see if I have any code left, but as I said it was a long time ago and I don't think I've kept all what I had.
I know you have a date/time picker in Access.
Outlook, is more like Excel than Access. But still you can create your own date/time picker easily.
Go to VBE, add a userform just like Excel, copy your code from Access to Outlook and instead of the inputbox, show your userform and you're done.

If Outlook is still like the days I used to play with it, it won't take long to have a date/time picker.
 
Last edited:
Both Display & Save work - its just a matter of preference as to whether the appointment end time gets edited before or after saving.

My app is 'just' a date picker - not time.
Its probably over 10 years since I last created user forms in Outlook
It probably would be easy enough to create an Outlook user form for this but I expect its already been done before. I can do an online search.

Of course, if Outlook allowed me to copy meetings, that would be even easier!
 
if Outlook allowed me to copy meetings, that would be even easier!
Have you seen this? There's only a registry key to bring back the ability of copying meetings.


If you have a need to re-enable copying meetings, you can set a non-policy registry key. As noted above, the practice of copying meetings can cause unexpected issues. If you re-enable the functionality and experience issues, please delete the copied meeting, and start with a new meeting. The Outlook Support Team will not troubleshoot issues related to copied meetings.

Use this registry key to re-enable copying meetings:

[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Options\Calendar]

"EnableMeetingCopy"=DWORD:1
 

Users who are viewing this thread

Back
Top Bottom