Items.SetColumns Method (Outlook)

Caches certain properties for extremely fast access to those particular properties of each item in an Items collection.


expression. SetColumns( _Columns_ )

expression A variable that represents an Items object.


Name Required/Optional Data Type Description
Columns Required String A string that contains the names of the properties to cache. The property names are delimited by commas in this string.


The SetColumns method is useful for iterating through an Items collection. If you don't use this method, Microsoft Outlook must open each item to access the property. With the SetColumns method, Outlook only checks the properties that you have cached, and provides fast, read-only access to these properties.

After applying the SetColumns method on specific properties of the collection, you cannot read other properties of that collection; properties which are not cached are returned empty. You cannot write to any of the properties of that collection either. Alternatively, if you require read-write, fast access to a set of items, use the Table object.

SetColumns cannot be used, and will cause an error, with any property that returns an object. It cannot be used with the following properties:

AutoResolvedWinner InternetCodePage
BodyFormat MemberCount
Categories ReceivedByEntryID
Children ReceivedOnBehalfOfEntryID
Class RecurrenceState
Companies ReplyRecipients
DLName ResponseState
DownloadState Saved
EntryID Sent
HTMLBody Submitted
IsConflict VotingOptions

The ConversationIndex property cannot be cached using the SetColumns method. However, this property will not result in an error like the other properties listed above.


The following Visual Basic for Applications (VBA) example uses the Items collection to get the items in default Tasks folder, caches the Subject and DueDate properties and then displays the subject and due dates each in turn.

Sub SortByDueDate() 
 Dim myNameSpace As Outlook.NameSpace 
 Dim myFolder As Outlook.Folder 
 Dim myItem As Object 
 Dim myItems As Outlook.Items 
 Set myNameSpace = Application.GetNamespace("MAPI") 
 Set myFolder = myNameSpace.GetDefaultFolder(olFolderTasks) 
 Set myItems = myFolder.Items 
 myItems.SetColumns ("Subject, DueDate") 
 For Each myItem In myItems 
 MsgBox myItem.Subject & " " & myItem.DueDate 
 Next myItem 
End Sub

See also

Items Object