Поделиться через


Referencing Existing Items in a Folder

Существует несколько способов ссылки на существующие элементы в папке с помощью Microsoft Visual Basic. В этом разделе содержатся сведения по следующим темам:

  • For … Next Использование цикла или For Each … Next

  • Использование коллекции Items

  • Использование метода Find

  • Использование метода Restrict

Использование for... Далее или Для каждого... Следующий цикл

Обычно эти инструкции используются для циклического просмотра всех элементов в папке. Коллекция Items содержит все элементы в определенной папке, и вы можете указать, на какой элемент следует ссылаться, используя индекс с коллекцией Items . Обычно используется с конструкцией программирования For i = 1 to n .

Используйте For Each...Next для циклического просмотра элементов в коллекции без указания индекса. Оба подхода достигают одного и того же результата.

В следующих примерах используется For…Next для циклического просмотра всех контактов в папке Контакты и отображения поля "Полное имя" в диалоговом окне.

' Microsoft Visual Basic for Applications code example. 
Set olns = Application.GetNameSpace("MAPI") 
' Set MyFolder to the default contacts folder. 
Set MyFolder = olns.GetDefaultFolder(olFolderContacts) 
' Get the number of items in the folder. 
NumItems = MyFolder.Items.Count 
' Set MyItem to the collection of items in the folder. 
Set myItems = myFolder.Items.Restrict("[MessageClass] = 'IPM.Contact'") 
' Loop through all of the items in the folder. 
For I = 1 to NumItems 
   MsgBox MyItems(I).FullName 
Next 

' Visual Basic Scripting Edition code example. 
Set olns = Item.Application.GetNameSpace("MAPI") 
' Set MyFolder to the default contacts folder. 
Set MyFolder = olns.GetDefaultFolder(10) 
' Get the number of items in the folder. 
NumItems = MyFolder.Items.Count 
' Set MyItem to the collection of items in the folder. 
Set myItems = myFolder.Items.Restrict("[MessageClass] = 'IPM.Contact'") 
' Loop through all of the items in the folder. 
For I = 1 to NumItems 
   MsgBox MyItems(I).FullName 
Next

В следующих примерах используется For Each...Next для достижения того же результата, что и в предыдущих примерах:

' Visual Basic/Visual Basic for Applications code example. 
Set olns = Application.GetNameSpace("MAPI") 
' Set MyFolder to the default contacts folder. 
Set MyFolder = olns.GetDefaultFolder(olFolderContacts) 
' Set MyItems to the collection of items in the folder. 
Set myItems = myFolder.Items.Restrict("[MessageClass] = 'IPM.Contact'") 
For Each SpecificItem in MyItems 
   MsgBox SpecificItem.FullName 
Next
' VBScript code example. 
Set olns = Item.Application.GetNameSpace("MAPI") 
' Set MyFolder to the default contacts folder. 
Set MyFolder = olns.GetDefaultFolder(10) 
' Set MyItem to the collection of items in the folder. 
Set myItems = myFolder.Items.Restrict("[MessageClass] = 'IPM.Contact'") 
For Each SpecificItem in MyItems 
   MsgBox SpecificItem.FullName 
Next

Использование коллекции элементов

Вы также можете использовать коллекцию Items и указать текстовую строку, соответствующую полю Subject элемента. В следующих примерах отображается элемент в папке "Входящие", тема которого содержит "Помощь в пятницу!"

' Visual Basic/Visual Basic for Applications code example. 
Set olns = Application.GetNameSpace("MAPI") 
' Set MyFolder to the default Inbox. 
Set MyFolder = olns.GetDefaultFolder(olFolderInbox) 
Set MyItem = MyFolder.Items("Please help on Friday!") 
MyItem.Display 

' VBScript code example. 
Set olns = Item.Application.GetNameSpace("MAPI") 
' Set MyFolder to the default Inbox. 
Set MyFolder = olns.GetDefaultFolder(6) 
Set MyItem = MyFolder.Items("Please help on Friday!") 
MyItem.Display

Использование метода Find

Используйте метод Find для поиска элемента в папке на основе значения одного из его полей. Если поиск выполнен успешно, можно использовать метод FindNext для проверка дополнительных элементов, соответствующих тем же критериям поиска.

В следующих примерах выполняется поиск, чтобы узнать, есть ли у вас высокоприоритетные задачи.

' Visual Basic/Visual Basic for Applications code example. 
Set olns = Application.GetNamespace("MAPI") 
Set myFolder = olns.GetDefaultFolder(olFolderTasks) 
Set MyTasks = myFolder.Items 
' Importance corresponds to Priority on the task form. 
Set MyTask = MyTasks.Find("[Importance] = ""High""") 
If MyTask Is Nothing Then ' the Find failed 
   MsgBox "Nothing important. Go party!" 
Else 
   MsgBox "You have something important to do!" 
End If
' VBScript code example. 
Set olns = Item.Application.GetNamespace("MAPI") 
Set myFolder = olns.GetDefaultFolder(13) 
Set MyTasks = myFolder.Items 
' Importance corresponds to Priority on the task form. 
Set MyTask = MyTasks.Find("[Importance] = ""High""") 
If MyTask Is Nothing Then ' the Find failed 
   MsgBox "Nothing important. Go party!" 
Else 
   MsgBox "You have something important to do!" 
End If

Использование метода Restrict

Метод Restrict аналогичен методу Find , но вместо возврата одного элемента он возвращает коллекцию элементов, соответствующих условиям поиска. Например, этот метод можно использовать для поиска всех контактов, работающих в одной компании.

В следующих примерах отображаются все контакты, которые работают в ProseWare Corporation:

' Automation code example. 
Set olns = Application.GetNameSpace("MAPI") 
Set MyFolder = olns.GetDefaultFolder(olFolderContacts) 
Set myItems = myFolder.Items.Restrict("[MessageClass] = 'IPM.Contact'") 
MyClause = "[CompanyName] = ""ProseWare""" 
Set MyPWItems = MyItems.Restrict(MyClause) 
For Each MyItem in MyPWItems 
   MyItem.Display 
Next
' VBScript code example. 
Set olns = Item.Application.GetNameSpace("MAPI") 
Set MyFolder = olns.GetDefaultFolder(10) 
Set myItems = myFolder.Items.Restrict("[MessageClass] = 'IPM.Contact'") 
MyClause = "[CompanyName] = ""ProseWare""" 
Set MyPWItems = MyItems.Restrict(MyClause) 
For Each MyItem in MyPWItems 
   MyItem.Display 
Next

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.