1. 主页 > 血脉觉醒 >

使用 EntryID 和 StoreID

本主题介绍如何使用项的条目 ID 和存储的 Store ID 访问 NameSpace 中的特定项。

如果使用 Microsoft Outlook 创建更复杂的解决方案,该解决方案涉及链接或交叉引用文件夹中的项目,一个选项是使用基于 MAPI 的标识符 (ID) 每个项目。 如果知道某个项目的 ID 及其存储到的文件夹,则可以使用 NameSpace.GetItemFromID 方法直接引用该项目。

每个 Outlook 项目都有一个名为 EntryID 的字段,该字段是邮件传输存储系统生成的唯一 ID 字段,与存储项目的 MAPI 文件夹协同使用。 请务必注意,每当在文件夹中创建项目时,将为其分配新的 EntryID。 这意味着如果将项目移动到其他文件夹中,或将项目导出然后导入(即使导入到同一文件夹中),EntryID 字段也将发生更改。

每个文件夹都有一个名为 Folder.StoreID 的 ID 字段,其值对于特定邮件存储中的所有文件夹相同。 每个文件夹还有一个唯一的条目 ID 字段。

当使用 GetItemFromID 方法根据项目 ID 检索项目时,应该同时指定项目的 EntryID 和文件夹的 StoreID。 如果未指定 StoreID,GetItemFromID 将搜索默认消息存储区。

下面的 Microsoft Visual Basic for Applications (VBA) 示例演示 GetItemFromID 方法的用法。 该代码从默认的“联系人”文件夹中检索 StoreID ,使用文件夹中 MyEntryID 所有联系人的条目 ID 填充 () 数组,最后检索特定的联系人项目:

Sub OutlookEntryID()

' If there are more than 500 contacts, change the following line:

Dim MyEntryID(500) As String

Dim StoreID As String

Dim EntryID As String

Set olns = Application.GetNamespace("MAPI")

Set objFolder = olns.GetDefaultFolder(olFolderContacts)

' Get the StoreID, which is a property of the folder.

StoreID = objFolder.StoreID

' Set objAllContacts equal to the collection of all contacts.

Set AllContacts = objFolder.Items

I = 0

' Loop to get all of the EntryIDs for the contacts.

For Each Item In AllContacts

I = I + 1

MyEntryID(I) = Item.EntryID

Next

' Randomly choose the 2nd contact to retrieve.

Set Item = olns.GetItemFromID(MyEntryID(2), StoreID)

Item.Display

End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。