Macro to Delete Duplicate items in Outlook calendar where title is the same and date is the same

Howardc

Member
OS Version(s)
  1. Windows
Outlook version
Outlook 2021 64 bit
Email Account
POP3
Operating system::    Windows 11
Outlook version:     Office 2021
Email type or host:    POp

I have various items in my outlook Calendar

Where the title is the same for e.g. Sales Returns for MJR Distributors to be summitted within 30 days of the due date and the date set in the calendar is 24/07/2024 (dd/mm/yyyy) , I want to retain one of the items with the same title and delete the balance using VBA

I have tried to write code but none of the duplicates are being deleted whilst retaining only one of the items that are the same

It would be appreciated if someone could either amend my code or provide code to do this

Code:
 Sub RemoveDuplicateAppointments()
    Dim olApp As Outlook.Application
    Dim olNamespace As Outlook.NameSpace
    Dim olFolder As Outlook.Folder
    Dim olItems As Outlook.Items
    Dim olItem As Object
    Dim dict As Object
    Dim key As String
    Dim specificDate As Date
    Dim startDate As String
    Dim endDate As String
    Dim deleteItems As Collection
    Dim item As Object
    Dim deleteCount As Integer
    
    ' Get the specific date from the user
    On Error Resume Next
    specificDate = InputBox("Enter the specific date (dd/mm/yyyy):", "Remove Duplicates")
    If Err.Number <> 0 Or specificDate = 0 Then
        MsgBox "Invalid date format. Please enter the date in dd/mm/yyyy format.", vbExclamation
        Exit Sub
    End If
    On Error GoTo 0
    
    ' Format the date as yyyy-mm-dd for filtering
    startDate = Format(specificDate, "yyyy-mm-dd") & " 00:00"
    endDate = Format(specificDate + 1, "yyyy-mm-dd") & " 00:00"
    
    ' Initialize Outlook objects
    Set olApp = New Outlook.Application
    Set olNamespace = olApp.GetNamespace("MAPI")
    Set olFolder = olNamespace.GetDefaultFolder(olFolderCalendar)
    Set olItems = olFolder.Items
    
    ' Restrict items to the specific date
    olItems.Sort "[Start]"
    olItems.IncludeRecurrences = True
    Set olItems = olItems.Restrict("[Start] >= '" & startDate & "' AND [Start] < '" & endDate & "'")
    
    ' Initialize dictionary to track unique titles and dates
    Set dict = CreateObject("Scripting.Dictionary")
    Set deleteItems = New Collection
    
    ' Loop through items to find duplicates based on Title and Date
    For Each olItem In olItems
        If TypeOf olItem Is Outlook.AppointmentItem Then
            ' Combine title and date (ignoring time) as key
            key = olItem.Subject & "|" & Format(olItem.Start, "dd/mm/yyyy")
            If dict.exists(key) Then
                ' This is a duplicate item, mark it for deletion
                deleteItems.Add olItem
            Else
                ' Add to dictionary to track unique title and date combinations
                dict.Add key, True
            End If
        End If
    Next olItem
    
    ' Delete duplicate items
    deleteCount = 0
    For Each item In deleteItems
        item.Delete
        deleteCount = deleteCount + 1
    Next item
    
    ' Clean up
    Set olItem = Nothing
    Set dict = Nothing
    Set deleteItems = Nothing
    Set olItems = Nothing
    Set olFolder = Nothing
    Set olNamespace = Nothing
    Set olApp = Nothing
    
    MsgBox deleteCount & " duplicate items removed for " & Format(specificDate, "dd/mm/yyyy"), vbInformation
End Sub


I have also cross posted -see below

 
Similar threads
Thread starter Title Forum Replies Date
R Help Revising VBA macro to delete email over different time span Outlook VBA and Custom Forms 0
P Delete mail macro Outlook VBA and Custom Forms 6
E Help with macro to answer and delete calendar requests? Outlook VBA and Custom Forms 5
7 Macro to mark message as junk and delete Outlook VBA and Custom Forms 3
S Macro to delete e-mail containing specific texts in the subject Outlook VBA and Custom Forms 3
N Macro in this Project are disabled Outlook VBA and Custom Forms 2
M Outlook 365 Amending code so macro runs within current new mail window Outlook VBA and Custom Forms 0
M Outlook 365 macro - automatically attach file based on subject line Outlook VBA and Custom Forms 0
J Outlook macro to run before email is being send Outlook VBA and Custom Forms 3
X Custom icon (not from Office 365) for a macro in Outlook Outlook VBA and Custom Forms 1
X Run macro automatically when a mail appears in the sent folder Using Outlook 5
mrrobski68 Issue with Find messages in a conversation macro Outlook VBA and Custom Forms 1
G Creating Macro to scrape emails from calendar invite body Outlook VBA and Custom Forms 6
M Use Macro to change account settings Outlook VBA and Custom Forms 0
J Macro to Reply to Emails w/ Template Outlook VBA and Custom Forms 3
C Outlook - Macro to block senders domain - Macro Fix Outlook VBA and Custom Forms 1
Witzker Outlook 2019 Macro to seach in all contact Folders for marked Email Adress Outlook VBA and Custom Forms 0
S macro error 4605 Outlook VBA and Custom Forms 0
A Macro Mail Alert Using Outlook 4
J Outlook 365 Outlook Macro to Sort emails by column "Received" to view the latest email received Outlook VBA and Custom Forms 0
J Macro to send email as alias Outlook VBA and Custom Forms 0
M Outlook Macro to save as Email with a file name format : Date_Timestamp_Sender initial_Email subject Outlook VBA and Custom Forms 0
Witzker Outlook 2019 Macro GoTo user defined search folder Outlook VBA and Custom Forms 6
D Outlook 2016 Creating an outlook Macro to select and approve Outlook VBA and Custom Forms 0
Witzker Outlook 2019 Macro to send an Email Template from User Defined Contact Form Outlook VBA and Custom Forms 0
Witzker Outlook 2019 Macro to check Cursor & Focus position Outlook VBA and Custom Forms 8
V Macro to mark email with a Category Outlook VBA and Custom Forms 4
M Outlook 2019 Macro not working Outlook VBA and Custom Forms 0
S Outlook 365 Help me create a Macro to make some received emails into tasks? Outlook VBA and Custom Forms 1
D Auto Remove [EXTERNAL] from subject - Issue with Macro Using Outlook 21
V Macro to count flagged messages? Using Outlook 2
sophievldn Looking for a macro that moves completed items from subfolders to other subfolder Outlook VBA and Custom Forms 7
S Outlook Macro for [Date][Subject] Using Outlook 1
E Outlook - Macro - send list of Tasks which are not finished Outlook VBA and Custom Forms 3
E Macro to block senders domain Outlook VBA and Custom Forms 1
D VBA Macro to Print and Save email to network location Outlook VBA and Custom Forms 1
N VBA Macro To Save Emails Outlook VBA and Custom Forms 1
N Line to move origEmail to subfolder within a reply macro Outlook VBA and Custom Forms 0
Witzker Outlook 2019 Macro to answer a mail with attachments Outlook VBA and Custom Forms 2
A Outlook 2016 Macro to Reply, ReplyAll, or Forward(but with composing new email) Outlook VBA and Custom Forms 0
J Macro to Insert a Calendar Outlook VBA and Custom Forms 8
W Macro to Filter Based on Latest Email Outlook VBA and Custom Forms 6
T Macro to move reply and original message to folder Outlook VBA and Custom Forms 6
D Autosort macro for items in a view Outlook VBA and Custom Forms 2
S HTML to Plain Text Macro - Help Outlook VBA and Custom Forms 1
A Macro to file emails into subfolder based on subject line Outlook VBA and Custom Forms 1
N Help creating a VBA macro with conditional formatting to change the font color of all external emails to red Outlook VBA and Custom Forms 5
S Visual indicator of a certain property or to show a macro toggle Outlook VBA and Custom Forms 2
L Modifying VBA script to delay running macro Outlook VBA and Custom Forms 3
S Macro to extract and modify links from emails Outlook VBA and Custom Forms 3

Similar threads

Back
Top