This VBA will copy the selected appointment. Use it to copy recurring events as single appointments to take notes so you can avoid editing the occurrence.
This creates an appointment from the selected occurrence. This code can be used either by selecting a recurring appointment in the Calendar or by opening the occurrence, then running the macro.
You can use VBA to convert a series to individual appointments. See Copy Recurring Appointment Series to Appointments for the code. If you just need a list of dates, see How to print a list of recurring dates using VBA.
Copy Recurring Appointment Code
Public Sub CopyRecurring() Dim oAppt As Outlook.AppointmentItem Dim newAppt As Outlook.AppointmentItem If TypeName(ActiveExplorer.Selection.Item(1)) = "AppointmentItem" Then Set oAppt = GetCurrentItem() Set newAppt = ActiveExplorer.CurrentFolder.Items.Add(olAppointmentItem) newAppt.Start = oAppt.Start newAppt.End = oAppt.End newAppt.Subject = oAppt.Subject & "(Copy)" newAppt.Body = oAppt.Body newAppt.Location = oAppt.Location newAppt.Categories= oAppt.Categories If oAppt.Attachments.Count > 0 Then CopyAttachments oAppt, newAppt End If newAppt.Display Set newAppt = Nothing Else MsgBox "Sorry, you need to select an appointment" End If 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 Sub CopyAttachments(objSourceItem, objTargetItem) Set fso = CreateObject("Scripting.FileSystemObject") Set fldTemp = fso.GetSpecialFolder(2) ' TemporaryFolder strPath = fldTemp.Path & "\" For Each objAtt In objSourceItem.Attachments strFile = strPath & objAtt.FileName objAtt.SaveAsFile strFile objTargetItem.Attachments.Add strFile, , , objAtt.DisplayName fso.DeleteFile strFile Next Set fldTemp = Nothing Set fso = Nothing End Sub
Hello!
I love this VBA, can we tweak it a little bit? I believe, I'm asking for a loop to add :)
So if I select a single day in my outlook calendar, I would like this macro to copy each occurence series as per selected day.
Let say I've 1 occuring meeting at 10 am and another at 2 pm.my desired output would be to both meetings be copied as appointments (not occuring). this way I do not have to click on each occuring appointment and run macro, instead I can select a day and run macro for all reccurring appointments today :)
VBA? Nothing built into Outlook for this? If not...it is a product defect and needs to be tracked as such.
If the calendar views, you can right-click and drag -and Outlook *should* create a single event but you need to drag to a different time period (or day if using month view) . The macro does it in place and it no more steps than dragging.