Use this code to delete the contents of a specific public folder.
To delete everything in the currently selected folder, use
Set delContents = Application.ActiveExplorer.CurrentFolder
instead of the Set delContents = olns.Folders line.
To use with deeper folder paths, you need to add more .Folders("MySubfolder"):
Set delContents = olns.Folders("Public Folders - alias@domain.com").Folders("All Public folders").Folders("Myfolder").Folders("MySubfolder").Folders("MySubfolder").Folders("MySubfolder")
Delete items from a folder
Public Sub DeleteItemsInFolder() Dim delContents As Outlook.MAPIFolder Dim item As Object Dim entryID As String ' Replace to use array Set olns = Application.GetNamespace("MAPI") Set delContents = olns.Folders("Public Folders - alias@domain.com").Folders("All Public folders").Folders("Myfolder").Folders("MySubfolder") For i = delContents.Items.Count To 1 Step -1 delContents.Items(i).Delete Next ' end replace Set item = Nothing Set delContents = Nothing Set olns = Nothing End Sub
Use an array to delete items from multiple subfolders
If you want to delete the contents of several subfolders, you can use an array to walk the folders. Replace the code above, from the Set olns line to Next, with this block. Enter the folder names in the Array, comma-separating the list.
Dim arrFolder As Variant Set olns = Application.GetNamespace("MAPI") arrFolder = Array("Contacts1", "Contacts2") For F = LBound(arrFolder) To UBound(arrFolder) Set delContents = olns.Folders("Public Folders - alias@domain.com").Folders("All Public folders").Folders("TestDelete").Folders(arrFolder(F)) For i = delContents.Items.Count To 1 Step -1 delContents.Items(i).Delete Next Next F
More Information
To use a variable for the public folder path, so it works with any user's profile, see How to get reference to Public Folder Store using Outlook Object Model for Outlook 2010?