다음을 통해 공유


How to delete old items from .pst attached to Outlook using CDO1.21 programmatically?

If you would like to clear up some old items from the growing PST attached to you Outlook profile; then here is a sample VBA macro code snippet to accomplish the job using CDO 1.21.

NOTE: Following programming examples is for illustration only, without warranty either 'expressed or implied, including, but not limited to, the implied warranties of 'merchantability and/or fitness for a particular purpose. This sample code assumes that you 'are familiar with the programming language being demonstrated and the tools used to create 'and debug procedures. This sample code is provided for the purpose of illustration only 'and is not intended to be used in a production environment.

 'We need to add reference to Collaboration Data Objects, version 1.2.1 before running the VBA macro
  
 Sub RemoveAllOldItems()
     Dim ol As Outlook.Application
     Dim olns As Outlook.NameSpace
     Dim colStores As Outlook.Stores
     Dim oStore As Outlook.Store
     Dim oRoot As Outlook.Folder
     Dim ocal As Outlook.Folder
         
     Set ol = Application
     Set olns = ol.GetNamespace("MAPI")
  
     Set colStores = olns.Application.Session.Stores
      For Each oStore In colStores
         Set oRoot = oStore.GetRootFolder
              
         If oStore.ExchangeStoreType = 3 Then 'And oRoot = "Test" Then
             DeleteOldItems oRoot
             EnumerateFolders oRoot
         End If
      Next
    
 End Sub
  
 Public Function EnumerateFolders(ByVal objFld As Outlook.Folder)
     Dim folders As Outlook.folders
     Dim Folder As Outlook.Folder
     Dim foldercount As Integer
     
     Set folders = objFld.folders
     foldercount = folders.Count
     'Check if there are any folders below oFolder
     If foldercount Then
         For Each Folder In folders
             Debug.Print (Folder.FolderPath)
             DeleteOldItems Folder
             EnumerateFolders Folder
         Next
     End If
 End Function
     
 Public Function DeleteOldItems(ByVal objfl As Outlook.Folder)
     Dim oItems As Outlook.items
     Dim i As Long
  
     Set oItems = objfl.items
     Dim oRT As Date
     For i = oItems.Count To 1 Step -1
         oRT = oItems.Item(i).ReceivedTime
         'Checking for 4 months old items 
         If DateDiff("m", oRT, Now()) >= 4 Then
             Debug.Print "Old item found"
             'Uncomment the below line to delete this item
             'oItems.Item(i).Delete
         End If
     Next
 End Function

 

If you are running Outlook 2007 then you need to download and install CDO 1.21 @ Collaboration Data Objects, version 1.2.1

Hope this helps! Happy Holidays :)