Copy meeting details to an Outlook appointment

Last reviewed on December 30, 2013

I have a couple of similar code samples on another page - one of the macros copies a cancelled meeting to an appointment, the other copies a meeting before the organizer cancels it. This macro just copies a meeting request to an appointment.

Why would you want to copy a meeting? In my case, to add it to the calendar that syncs with my blackberry. If I forward the meeting, my default address is exposed to the organizer. Meeting organizers might want a copy they can use to block off time before or after the meeting, or to use for meeting notes.

iCloud users may want to copy appointments instead of meeting to avoid issues with the iCloud sending out meeting invitations.

This code sample uses the GetCurrentItem function (included) and works with either selected meetings or opened meetings.

Copy Meeting to an Appointment

To use, open the VBA Editor and paste the code into a module. Select a meeting them run the macro.

Sub copyMeeting()
 
Dim oAppt As AppointmentItem
Dim cAppt As AppointmentItem
 
Set cAppt = GetCurrentItem()
Set oAppt = Application.CreateItem(olAppointmentItem)
     
     
    oAppt.Subject = "Copied: " & cAppt.Subject
    oAppt.Start = cAppt.Start
    oAppt.Duration = cAppt.Duration
    oAppt.Location = cAppt.Location
    oAppt.Save
     
    Set oAppt = Nothing
    Set cAppt = Nothing
 
 
End Sub
 
Function GetCurrentItem() As Object
    Dim objApp As Outlook.Application
          
    Set objApp = Application
    On Error Resume Next
    Select Case TypeName(objApp.ActiveWindow)
        Case "Explorer"
            Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
        Case "Inspector"
            Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
    End Select
      
    Set objApp = Nothing
End Function

Copy appointments to a different calendar

If you are using this macro to copy meetings as appointments to another calendar, such as the iCloud, you need to tweak the code to use folders in other data stores.

You will need to get the code at Working with VBA and non-default Outlook Folders to set the folder to the iCloud folder. Paste it in the VB Editor, at the end of this code.

Note: This will work with any data file, not just iCloud. Change the path in the objCalendarFolder line to use the name of the data file (as seen in the Folder list) and calendar path.

Sub copyMeetingtofolder()

Dim objCalendarFolder As Outlook.Folder
Dim oAppt As AppointmentItem
Dim cAppt As AppointmentItem
 
Set cAppt = GetCurrentItem()
Set oAppt = Application.CreateItem(olAppointmentItem)
     
     
     Set objCalendarFolder = GetFolderPath("iCloud\calendar")
     
     
    oAppt.Subject = "Copied: " & cAppt.Subject
    oAppt.Start = cAppt.Start
    oAppt.Duration = cAppt.Duration
    oAppt.Location = cAppt.Location
    oAppt.Save

    oAppt.Move objCalendarFolder
     
    Set oAppt = Nothing
    Set cAppt = Nothing
 Set objCalendarFolder = Nothing
 
End Sub
 
Function GetCurrentItem() As Object
    Dim objApp As Outlook.Application
          
    Set objApp = Application
    On Error Resume Next
    Select Case TypeName(objApp.ActiveWindow)
        Case "Explorer"
            Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
        Case "Inspector"
            Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
    End Select
      
    Set objApp = Nothing
End Function

Block off travel time

You can use macros similar to the code on these pages to block off travel time by changing the fields.

    oAppt.subject = "downtime: " & cAppt.subject
    oAppt.Start = cAppt.End
    oAppt.Duration = 15

Written by

Diane Poremsky
A Microsoft Outlook Most Valuable Professional (MVP) since 1999, Diane is the author of several books, including Outlook 2013 Absolute Beginners Book. She also created video training CDs and online training classes for Microsoft Outlook. You can find her helping people online in Outlook Forums as well as in the Microsoft Answers and TechNet forums.

Please post long or more complicated questions at Outlookforums.

10 responses to “Copy meeting details to an Outlook appointment”

  1. JB

    Cool stuff....but how do I cancel the meeting that I copied if I receive a cancellation request from the original sender?

  2. David

    I've copied the above code and the GetFolderPath() code into a module but during execution I get a Run-time error '13': Type mismatch upon returning from the GetCurrentItem() function. I stepped into GetCurrentItem() and it seems to run OK.

    I do not have anything in ThisOutlookSession().

    Any idea what I'm missing?

  3. David

    The issue seems to be that GetCurrentItem() returns an Object which cannot be directly assigned to the cAppt variable which is declared as an AppointmentItem. Changing cAppt to be of type Object and inlining the code from GetCurrentItem() resolves my original issue. However, I like the idea of the GetCurrentItem() function but cannot figure out how to cast the Object returned to an object of type AppointmentItem.

  4. David

    Office Professional Plus 2010 64 bit.

  5. Thomoas

    I'm seeing the same error, and not a VB programmer for sure, so what is the fix?

  6. Thomas

    I corrected it...now if it would copy the color I had assinged to the original, it would be great.

Leave a Reply

If the Post Coment button disappears, press your Tab key.