• Outlook User
  • New Outlook app
  • Outlook.com
  • Outlook Mac
  • Outlook & iCloud
  • Developer
  • Microsoft 365 Admin
    • Common Problems
    • Microsoft 365
    • Outlook BCM
    • Utilities & Addins

VBA: Copy New Appointments to Another Calendar

Slipstick Systems

› Developer › VBA: Copy New Appointments to Another Calendar

Last reviewed on September 27, 2021     514 Comments

This macro "watches" for a new appointment to be added to the calendar and copies it to a second calendar. This is useful if you are sharing a calendar or syncing one calendar with a smartphone.

Use a macro to copy appointments

The code contains and If - Then statement (If Item.BusyStatus = olBusy Then) and copies only items that are marked busy. You can use use Categories or keywords in the subject as the filter or copy all items by removing the If.. and Then lines. You can remove or change the "Copied" tag added to the subject line.

This code, as written, assumes the second calendar is in another data file in the profile. It can easily be changed to work with a folder in the current data file. See Working with VBA and non-default Outlook Folders for more information.

To use:

  1. Enable macros in the Trust Center. In Outlook 2010/2013, this is at File, Options, Trust Center, Macros. In Outlook 2007, go to Tools, Trust Center. Use either warn or no security for now. Once you are happy with it, you can sign it with a self-certificate and set macros to signed-only.
  2. Open the VB Editor by pressing Alt+F11 on your keyboard.
  3. Expand Project1 to display ThisOutlookSession and double click to open it to the right side.
  4. Paste the code below into ThisOutlookSession. I have a text file with the macros here: Text file containing the macros to copy, change, and delete appointments.
  5. Change the folder path ("display name in folder list\Calendar") to the display name you see in the Folder List (this is usually the email address in Outlook 2010 and 2013). For example, the path shown in these screenshots is "New PST\Test Cal".
    Folder paths
    You can see the parent path in the Folder List (Ctrl+6) or right-click on the Calendar folder and choose Properties when in the Calendar module. The path can be copied from the Properties page, which can be helpful for nested folders or long names.
    parent path on folder properties
  6. Place the mouse in the Application_StartUp macro and press the Run button or F5.
  7. Create an appointment in your calendar and see if it was copied to the other calendar.

May 17 2019: Replaced code that searched on GUID to use GetDATETIME function instead as the GUID function is blocked due to security updates.

If you prefer to use a random alphanumeric code instead of the GUID, use the last code sample at Create sequential numbers or random character keywords for the necessary VBA code and update the macro accordingly.

September 22 2017: changed the code to copy all appointments except those marked Free. It previously only copied Busy appt.)

Dim WithEvents curCal As Items
Dim newCalFolder As Outlook.folder
 
Private Sub Application_Startup()
   Dim NS As Outlook.NameSpace
   Set NS = Application.GetNamespace("MAPI")
' calendar to watch for new items
   Set curCal = NS.GetDefaultFolder(olFolderCalendar).Items
' calendar moving copy to
   Set newCalFolder = GetFolderPath("data-file-name\calendar")
   Set NS = Nothing
End Sub
  
Private Sub curCal_ItemAdd(ByVal Item As Object)
Dim cAppt As AppointmentItem
Dim moveCal As AppointmentItem
 
' On Error Resume Next

' copy all but appt marked Free
' remove to make a copy of all items
If Item.BusyStatus <> olFee Then
 
 
   Item.Body = Item.Body & "[" & GetDATETIME & "]"
   Item.Save
   
Set cAppt = Application.CreateItem(olAppointmentItem)

With cAppt
    .Subject = "Copied: " & Item.Subject
    .Start = Item.Start
    .Duration = Item.Duration
    .Location = Item.Location
    .Body = Item.Body
End With
 
' set the category after it's moved to force EAS to sync changes
 Set moveCal = cAppt.Move(newCalFolder)
 moveCal.Categories = "moved"
 moveCal.Save
 
    End If
 End Sub

Public Function GetDATETIME() As String
   GetDATETIME = Format(DateTime.Now, "yyyy-MM-dd hh:mm:ss")
End Function

Function GetFolderPath(ByVal FolderPath As String) As Outlook.Folder
    Dim oFolder As Outlook.Folder
    Dim FoldersArray As Variant
    Dim i As Integer
        
    On Error GoTo GetFolderPath_Error
    If Left(FolderPath, 2) = "\\" Then
        FolderPath = Right(FolderPath, Len(FolderPath) - 2)
    End If
    'Convert folderpath to array
    FoldersArray = Split(FolderPath, "\")
    Set oFolder = Application.Session.Folders.Item(FoldersArray(0))
    If Not oFolder Is Nothing Then
        For i = 1 To UBound(FoldersArray, 1)
            Dim SubFolders As Outlook.Folders
            Set SubFolders = oFolder.Folders
            Set oFolder = SubFolders.Item(FoldersArray(i))
            If oFolder Is Nothing Then
                Set GetFolderPath = Nothing
            End If
        Next
    End If
    'Return the oFolder
    Set GetFolderPath = oFolder
    Exit Function
        
GetFolderPath_Error:
    Set GetFolderPath = Nothing
    Exit Function
End Function

This code was submitted by Anshu Nahar, He made some changes to ItemAdd and ItemChange; so now this works for recurring items as well, including all exceptions.

Private Sub curCal_ItemAdd(ByVal Item As Object)
    Dim cAppt As AppointmentItem
    Dim movecal As AppointmentItem
    
    On Error Resume Next
    
    Item.Mileage = "$NCDTH1$" & GetUniqueId
    Item.Save
    
    Set cAppt = Item.Copy
    cAppt.Categories = "Copied"
    cAppt.Move newCalFolder
    
 End Sub
  
Private Sub curCal_ItemChange(ByVal Item As Object)
    Dim cAppt As AppointmentItem
    Dim objAppointment As AppointmentItem
    Dim targetItems As Outlook.Items
       
       
    On Error Resume Next
      
    strMileage = Item.Mileage
    
    Set targetItems = newCalFolder.Items
    targetItems.Sort (Mileage)
    
    For Each objAppointment In targetItems
        If objAppointment.Mileage = strMileage Then
            Set cAppt = objAppointment
            cAppt.Delete
            Set cAppt = Item.Copy
            cAppt.Categories = "Copied"
            cAppt.Move newCalFolder
        End If
     Next
     
End Sub

 

Copy to a Shared Exchange Calendar

When the calendar you want to copy to or from is in a shared Exchange mailbox, you need to resolve the owner's name or alias and pass it to GetSharedDefaultFolder. You can use the alias, default SMTP address, or display name. I recommend using the alias or email address.

Replace the Application_Startup macro in this text file with the version here.

Private Sub Application_Startup()
  Dim NS As Outlook.NameSpace
  Dim CalendarFolder As Outlook.Folder
  Dim objOwner As Outlook.Recipient
  
  Set NS = Application.GetNamespace("MAPI")
   ' default calendar
Set curCal = NS.GetDefaultFolder(olFolderCalendar).Items

   'calendar you are copying to
Set objOwner = NS.CreateRecipient("maryc")
    objOwner.Resolve
     

 If objOwner.Resolved Then
   'MsgBox objOwner.Name

  Set newCalFolder = NS.GetSharedDefaultFolder(objOwner, olFolderCalendar)
  Set Items = newCalFolder.Items
 End If

End Sub

Update copied appointment

If you want to update appointments on the second calendar, add this code sample to the module. This code looks for an appointment with the same GUID. When you save changes, the matching event is also updated.

Because this code looks for the GUID, you can change the subject or start time.

This code is written to work with the ItemAdd macros above and gets the newCalFolder name from the application_startup macro.

 
Private Sub curCal_ItemChange(ByVal Item As Object)
Dim cAppt As AppointmentItem
Dim objAppointment As AppointmentItem
Dim strBody As String    
 On Error Resume Next
      
' use 2 + the length of GetDATETIME string
strBody = Right(Item.Body, 21)
 
For Each objAppointment In newCalFolder.Items
 If InStr(1, objAppointment.Body, strBody) Then
         Set cAppt = objAppointment
   End If
 Next

With cAppt
    .Subject = "Copied: " & Item.Subject
    .Start = Item.Start
    .Duration = Item.Duration
    .Location = Item.Location
    .Body = Item.Body
    .Save
End With
  
End Sub

Delete the copied appointment

When you delete the original appointment, the following code will delete the copy as well. Thanks to Adrian for this!

This code watches the deleted items folder for deleted appointments. It gets the newCalFolder name from the application_startup macro.

You'll need to add lines to the top of ThisOutlookSession and Application_Startup.

Updated January 26 2016 to watch the deleted items folder for deleted appointments instead of using the Remove event.

'At top of ThisOutlookSession:
Dim WithEvents DeletedItems As Items

'In Application_Start macro:
Set DeletedItems = NS.GetDefaultFolder(olFolderDeletedItems).Items

Private Sub DeletedItems_ItemAdd(ByVal Item As Object)
' only apply to appointments
If Item.MessageClass <> "IPM.Appointment" Then Exit Sub
' if using a category on copied items, this may speed it up.
If Item.Categories = "moved" Then Exit Sub
 
Dim cAppt As AppointmentItem
 Dim objAppointment As AppointmentItem
 Dim strBody As String
 
On Error Resume Next
 
' use 2 + the length of the GetDATETIME string
 strBody = Right(Item.Body, 21)
 If Left(strBody, 1) <> "[" Then Exit Sub

For Each objAppointment In newCalFolder.Items
 If InStr(1, objAppointment.Body, strBody) Then
 Set cAppt = objAppointment
 cAppt.Delete
 End If
 Next
 
 End Sub

VBA: Copy New Appointments to Another Calendar was last modified: September 27th, 2021 by Diane Poremsky

Related Posts:

  • This macro copies a meeting request to an appointment. Why would you w
    Copy meeting details to an Outlook appointment
  • Accept or decline a meeting request then forward or copy it
  • Move Appointments to an Archive Calendar
  • Save appointments to a non-default Outlook calendar folder

About 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.

Subscribe
Notify of
514 Comments
newest
oldest most voted
Inline Feedbacks
View all comments

Adrian Hernandez (@guest_208657)
September 20, 2017 11:44 am
#208657

I am getting a Run-time error '214...' (see attached picture). Also, how can I get this code to copy to a SharePoint calendar? I have Outlook configured to show the SharePoint calendar.

Outlook copy appointment macro errors.jpg
0
0
Reply
Diane Poremsky(@diane-poremsky)
Author
Reply to  Adrian Hernandez
September 20, 2017 12:45 pm
#208659

Do you know which line is triggering the error? As long as the sharepoint calendar is writable, you can use the getfolderpath function and enter the name of the data file and calendar:
Set newCalFolder = GetFolderPath("sharepoint lists\calendar")

0
0
Reply
Adrian Hernandez (@guest_208749)
Reply to  Diane Poremsky
September 27, 2017 11:04 am
#208749

Not able to use the GetGuid as OLE32.dll is not accesible as a reference (Online research it is probably disabled do to recent Microsoft patches). Tried an alternative function, but the results are the same as they also depend on OLE32.DLL availability. I am running Windows 7 X64 with Office 2010 X32.

0
0
Reply
Diane Poremsky(@diane-poremsky)
Author
Reply to  Adrian Hernandez
September 28, 2017 8:56 am
#208770

Yeah, that's what I suspected but hadn't had time to check up on. Thanks. Someone earlier used the date - i'll look at the code and see if there is a better way (like using find and restrict).

0
0
Reply
Adrian Hernandez (@guest_208772)
Reply to  Diane Poremsky
September 28, 2017 11:13 am
#208772

I found an alternative function for generating GUIDS. Private Type GUID PartOne As Long PartTwo As Integer PartThree As Integer PartFour(7) As Byte End Type Private Declare Function CoCreateGuid Lib "OLE32.DLL" (ptrGuid As GUID) As Long Dim WithEvents curCal As Items Dim WithEvents DeletedItems As Items Dim newCalFolder As Outlook.Folder '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' 9/27/2017. ' Adrian Hernandez. ' ' Code is an adaptation from http://www.freevbcode.com/ShowCode.asp?ID=21 Public Function GUID() As String On Error GoTo errorhandler Dim lRetVal As Long Dim udtGuid As GUID Dim sPartOne As String Dim sPartTwo As String Dim sPartThree As String Dim sPartFour As String Dim iDataLen As Integer Dim iStrLen As Integer Dim iCtr As Integer Dim sAns As String sAns = "" lRetVal = CoCreateGuid(udtGuid) If lRetVal = 0 Then 'First 8 chars sPartOne = Hex$(udtGuid.PartOne) iStrLen = Len(sPartOne) iDataLen = Len(udtGuid.PartOne) sPartOne = String((iDataLen * 2) - iStrLen, "0") _ & Trim$(sPartOne) 'Next 4 Chars sPartTwo = Hex$(udtGuid.PartTwo) iStrLen = Len(sPartTwo) iDataLen = Len(udtGuid.PartTwo) sPartTwo = String((iDataLen * 2) - iStrLen, "0") _ & Trim$(sPartTwo) 'Next 4 Chars sPartThree = Hex$(udtGuid.PartThree) iStrLen = Len(sPartThree) iDataLen = Len(udtGuid.PartThree) sPartThree = String((iDataLen * 2) - iStrLen, "0") _ & Trim$(sPartThree) 'Next 2 bytes (4 hex digits) 'Final… Read more »

1
0
Reply
Diane Poremsky(@diane-poremsky)
Author
Reply to  Adrian Hernandez
September 29, 2017 12:00 am
#208785

I was just coming here to post a version from Chip Pearson.
http://www.cpearson.com/excel/CreateGUID.aspx (It works in Outlook as written, I changed the GetGuid line to GetGUID = CreateGUID() and added Chip's code to the page rather than replacing the current function with his.
His code formats it as [8F64A5857F6E43D297546347F482C4DC]

0
0
Reply
manuel (@guest_210511)
Reply to  Adrian Hernandez
March 2, 2018 12:57 pm
#210511

Hello!

I have this error now, how did you solved it? I know the comments on this same post may be the key, but I dont really understand, sorry to ask.

thanks in advance

0
0
Reply
Diane Poremsky(@diane-poremsky)
Author
Reply to  manuel
March 2, 2018 7:00 pm
#210514

I believe that error is caused by the GUID function - it's apparently not supported in windows anymore. (I haven't had time redo this in a better way yet.)
If you comment out or delete these lines, does it work?
Item.Body = Item.Body & "[" & GetGUID & "]"
Item.Save

0
0
Reply
Kourtney (@guest_208082)
August 7, 2017 4:17 pm
#208082

For ~6 months this code has worked well for me. I am creating/deleting from a personal outlook email calendar to a shared Office 365 calendar (SharePoint). Recently, it has stopped working and is giving "Run-time error '-2147024891 (80070005)': You don't have permission to perform this operation" on the macro lin: GetGUID = Mid$(CreateObject("Scriptlet.TypeLib").GUID, 2, 36)
I changed my access to full control of the Office 365 (SharePoint) calendar, but it didn't solve the issue.
Any ideas on how to fix this?

0
0
Reply
Diane Poremsky(@diane-poremsky)
Author
Reply to  Kourtney
September 22, 2017 5:19 pm
#208693

Does it work if you comment out that line?

0
0
Reply
Kourtney (@guest_208709)
Reply to  Diane Poremsky
September 25, 2017 8:18 am
#208709

I ended up replacing the GUID with a Date/Time stamp. It works again. Thanks!

Public Function GetDATETIME() As String
GetDATETIME = Format(DateTime.Now, "yyyy-MM-dd hh:mm:ss")
End Function

1
0
Reply
Diane Poremsky(@diane-poremsky)
Author
Reply to  Kourtney
September 25, 2017 1:24 pm
#208710

Thanks for the update. I hadn't yet had a chance to test the guid code to see if an update broke it or something else was going on.

0
0
Reply
Mayank (@guest_211005)
Reply to  Diane Poremsky
May 4, 2018 3:41 am
#211005

Has anyone found a solution to the run time error "You do not have the appropriate permissions..." yet? I need it urgently for an assignment. When I debug, it points to GetGUID = Mid$(CreateObject("Scriptlet.TypeLib").GUID, 2, 36)

0
0
Reply
Diane Poremsky(@diane-poremsky)
Author
Reply to  Mayank
May 4, 2018 9:39 am
#211006

That is an issue with the newest builds of office and windows - the scriptlet is not available or is blocked. There is a different method in the comments and I'm working on using search to find the messages rather than the GUID, except it has some limitations on what can be changed.

I pinned the relevant comment to the top of the comments.

0
0
Reply
Jamie Tebbs (@guest_220056)
February 8, 2023 6:47 am
#220056

Could anyone help me with the delete function, i have the code setup and it works briliiantly for copying, ammending but it wont delete the copy.

2
0
Reply
Diane Poremsky(@diane-poremsky)
Author
Reply to  Jamie Tebbs
February 8, 2023 11:11 am
#220057

The delete code is kind of buggy - the problem is having a sure-fire way to identify the duplicate and delete the right one. I'll take a look and see if it can be improved using other methods.

2
0
Reply
Delphine (@guest_220116)
Reply to  Diane Poremsky
March 2, 2023 1:30 am
#220116

Brilliant functionality and so glad to see you're still involved!

Is there a way to trigger a copy on an event change? For example, an invite that was previously accepted as "tentative" and is now "accepted".

0
0
Reply
Delphine (@guest_220115)
Reply to  Jamie Tebbs
March 2, 2023 1:28 am
#220115

Jamie did you get this working with GUID or have to replace it with getdatetime?

I am also not able to delete.

0
0
Reply
Jamie Tebbs (@guest_221089)
Reply to  Delphine
May 15, 2024 7:50 am
#221089

In the end had to give up on it as it was to inconsistent for our usage.

0
0
Reply
Diane Poremsky(@diane-poremsky)
Author
Reply to  Jamie Tebbs
May 15, 2024 8:51 am
#221094

Yeah, the macro can be inconsistent, or in my words... buggy.

0
0
Reply
Shameka Harris (@guest_219883)
November 26, 2022 5:08 pm
#219883

Hello. Thank you so much for this article and instructions! I have put the code as you said, as well as the updates listed below. I am getting the error "Compile error: Ambiguous name detected: curCal_ItemChange" Please help!
Also, I want to move items with "court" in the location name. What would I change to do that.
Thank you in advance for your help!

0
0
Reply
Noh (@guest_219596)
August 5, 2022 12:42 am
#219596

Hi, I made some changes to this code and having an issue with update event if there are more than 1 event in same day.
If i made changes to event 1 it will delete the event 2 and update the event 1 details. The event 2 details should not be deleted as I just update the event 2.
Please help me to resolver this.

KLI.jpg
0
0
Reply
Mia (@guest_219538)
July 13, 2022 3:54 am
#219538

Hi, I am having an issue if the calendar is having more than one meeting in same day. It will only copied the last updated meeting to another calendar.

f9.jpg
0
0
Reply
Dennis (@guest_218886)
November 16, 2021 2:18 am
#218886

Hey All,

Thanks for this Script!

Some Question, i Try to Change it, so that one Calender Sync there Appointments to two other shared calendars.

Could Someone Help me?

Thanks a Lot!

0
0
Reply
Bryan (@guest_215567)
July 8, 2020 3:36 am
#215567

Hi Diane,
Very inspirational code and running for me already.
However there is this tricky issue always haunting me:

  1. When a meeting invitation reaches me, it gets automatically mirrored my calender, no problem here
  2. But if I click "Accept", logically Outlook would trigger a "Appointment Modification" event, but not really -- it triggers a "New appointment" event to replace the prior one -> cause there are always two mirrored events in the dummy calendar. -- annoying

Am I the only one having this trouble, and is there any work around, please?

0
0
Reply
Roshan Sai Pratap (@guest_215497)
June 26, 2020 8:56 pm
#215497

I have attached the image of my calendar structure.

roshan.PNG
0
0
Reply
Roshan Sai Pratap (@guest_215496)
June 26, 2020 8:51 pm
#215496

Hi Diane,
 
Thanks for the solution. But I have a question.
 
My Calendar structure is shown below. My default email id is roshan@ezshred.com. I am trying to copy an event from roshan@ezshred.com to prudhvi@ezshred.com. When I tried to do that, the event is copied in the same email where I have created.
 
Private Sub Application_Startup()
  Dim NS As Outlook.NameSpace
  Set NS = Application.GetNamespace("MAPI")
' calendar to watch for new items
  Set curCal = NS.GetDefaultFolder(olFolderCalendar).Items
'calendar you are copying to
Set newCalFolder = GetFolderPath("\\alias@domain.com")
  
End Sub
 
 


Last edited 4 years ago by Diane Poremsky
0
0
Reply
Ian (@guest_218337)
Reply to  Roshan Sai Pratap
June 3, 2021 8:33 pm
#218337

it should be like "alias@domain.com\Calendar"

basically get rid of the \\ and add \Calendar

Last edited 4 years ago by Diane Poremsky
0
0
Reply

Visit Slipstick Forums.
What's New at Slipstick.com

Latest EMO: Vol. 30 Issue 19

Subscribe to Exchange Messaging Outlook






Support Services

Do you need help setting up Outlook, moving your email to a new computer, migrating or configuring Office 365, or just need some one-on-one assistance?

Our Sponsors

CompanionLink
ReliefJet
  • Popular
  • Latest
  • Week Month All
  • Jetpack plugin with Stats module needs to be enabled.
  • Open Outlook Templates using PowerShell
  • Count and List Folders in Classic Outlook
  • Google Workspace and Outlook with POP Mail
  • Import EML Files into New Outlook
  • Opening PST files in New Outlook
  • New Outlook: Show To, CC, BCC in Replies
  • Insert Word Document into Email using VBA
  • Delete Empty Folders using PowerShell
  • Warn Before Deleting a Contact
  • Classic Outlook is NOT Going Away in 2026
Ajax spinner

Recent Bugs List

Microsoft keeps a running list of issues affecting recently released updates at Fixes or workarounds for recent issues in classic Outlook (Windows).

For new Outlook for Windows: Fixes or workarounds for recent issues in new Outlook for Windows .

Outlook for Mac Recent issues: Fixes or workarounds for recent issues in Outlook for Mac

Outlook.com Recent issues: Fixes or workarounds for recent issues on Outlook.com

Office Update History

Update history for supported Office versions is at Update history for Office

Outlook Suggestions and Feedback

Outlook Feedback covers Outlook as an email client, including Outlook Android, iOS, Mac, and Windows clients, as well as the browser extension (PWA) and Outlook on the web.

Outlook (new) Feedback. Use this for feedback and suggestions for Outlook (new).

Use Outlook.com Feedback for suggestions or feedback about Outlook.com accounts.

Other Microsoft 365 applications and services




New Outlook Articles

Open Outlook Templates using PowerShell

Count and List Folders in Classic Outlook

Google Workspace and Outlook with POP Mail

Import EML Files into New Outlook

Opening PST files in New Outlook

New Outlook: Show To, CC, BCC in Replies

Insert Word Document into Email using VBA

Delete Empty Folders using PowerShell

Warn Before Deleting a Contact

Classic Outlook is NOT Going Away in 2026

Newest Code Samples

Open Outlook Templates using PowerShell

Count and List Folders in Classic Outlook

Insert Word Document into Email using VBA

Warn Before Deleting a Contact

Use PowerShell to Delete Attachments

Remove RE:, FWD:, and Other Prefixes from Subject Line

Change the Mailing Address Using PowerShell

Categorize @Mentioned Messages

Send an Email When You Open Outlook

Delete Old Calendar Events using VBA

VBA Basics

How to use the VBA Editor

Work with open item or selected item

Working with All Items in a Folder or Selected Items

VBA and non-default Outlook Folders

Backup and save your Outlook VBA macros

Get text using Left, Right, Mid, Len, InStr

Using Arrays in Outlook macros

Use RegEx to extract message text

Paste clipboard contents

Windows Folder Picker

Custom Forms

Designing Microsoft Outlook Forms

Set a custom form as default

Developer Resources

Developer Resources

Developer Tools

VBOffice.net samples

SlovakTech.com

Outlook MVP David Lee

Repair PST

Convert an OST to PST

Repair damaged PST file

Repair large PST File

Remove password from PST

Merge Two Data Files

Sync & Share Outlook Data

  • Share Calendar & Contacts
  • Synchronize two computers
  • Sync Calendar and Contacts Using Outlook.com
  • Sync Outlook & Android Devices
  • Sync Google Calendar with Outlook
  • Access Folders in Other Users Mailboxes

Diane Poremsky [Outlook MVP]

Make a donation

Mail Tools

Sending and Retrieval Tools

Mass Mail Tools

Compose Tools

Duplicate Remover Tools

Mail Tools for Outlook

Online Services

Calendar Tools

Schedule Management

Calendar Printing Tools

Calendar Reminder Tools

Calendar Dates & Data

Time and Billing Tools

Meeting Productivity Tools

Duplicate Remover Tools

Productivity

Productivity Tools

Automatic Message Processing Tools

Special Function Automatic Processing Tools

Housekeeping and Message Management

Task Tools

Project and Business Management Tools

Choosing the Folder to Save a Sent Message In

Run Rules on messages after reading

Help & Suggestions

Submit Outlook Feature Requests

Slipstick Support Services

Buy Microsoft 365 Office Software and Services

Visit Slipstick Forums.

What's New at Slipstick.com

Home | Outlook User | Exchange Administrator | Office 365 | Outlook.com | Outlook Developer
Outlook for Mac | Common Problems | Utilities & Addins | Tutorials
Outlook & iCloud Issues | Outlook Apps
EMO Archives | About Slipstick | Slipstick Forums
Submit New or Updated Outlook and Exchange Server Utilities

Send comments using our Feedback page
Copyright © 2025 Slipstick Systems. All rights reserved.
Slipstick Systems is not affiliated with Microsoft Corporation.

wpDiscuz

Sign up for Exchange Messaging Outlook

Our weekly Outlook & Exchange newsletter (bi-weekly during the summer)






Please note: If you subscribed to Exchange Messaging Outlook before August 2019, please re-subscribe.

Never see this message again.

You are going to send email to

Move Comment