このトピックでは、アイテムのエントリ ID とストアのストア ID を使用して 、NameSpace 内の特定のアイテムにアクセスする方法について説明します。
フォルダー内のアイテムをリンクまたは相互参照する Microsoft Outlook を使用して、より複雑なソリューションを作成する場合、1 つのオプションは、各項目の MAPI ベースの識別子 (ID) を使用することです。 アイテムの ID と格納されているフォルダーがわかっている場合は、 NameSpace.GetItemFromID メソッドを使用してアイテムを直接参照できます。
各 Outlook アイテムには 、EntryID という名前のフィールドがあります。これは、アイテムを格納する MAPI フォルダーで使用するためにメッセージング ストレージ システムによって生成される一意の ID フィールドです。 フォルダーにアイテムが作成されるたびに、新しい 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 のサポートおよびフィードバックを参照してください。