Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Программирование в Microsoft Office для пользователей
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

13.5 Коллекция Folders и объект MAPIFolder

Объект Outlook.MAPIFolder, свойства и методы объекта Outlook.MAPIFolder, получение ссылки на конкретную папку, проход по всем папкам Outlook из VBA

Обычно, когда мы программным образом работаем с Outlook, нам нужно что-то сделать с его элементами — почтовыми сообщениями, контактами, встречами в календаре и т.п. Все эти элементы расположены в папках Outlook (либо встроенных, либо созданных пользователем). Папкам в объектной модели Outlook соответствуют объекты MAPIFolder, которые сведены в коллекцию Folders.

В Outlook папки могут быть вложены друг в друга. На самом верху расположены папки верхнего уровня (это не Входящие, Контакты, Черновики и т.п., как, наверное, вы подумали, а папки более высокого уровня, например, Личные папки, Общие папки, Mailbox — Administrator. Доступ к коллекции Folders, представляющей папки самого верхнего уровня, производится через свойство Folders объекта Namespace (см. выше):

Dim oOutlook As New Outlook.Application

Dim oNameSpace As Outlook.NameSpace

Dim oFolder As Outlook.MAPIFolder

Set oNameSpace = oOutlook.GetNamespace("MAPI")

For Each oFolder In oNameSpace.Folders

Debug.Print oFolder.Name

Next

Если вам нужна конкретная встроенная папка, например, Inbox, то проще всего ее найти при помощи метода GetDefaultFolder() объекта Namespace:

Dim oOutlook As New Outlook.Application

Dim oNameSpace As Outlook.NameSpace

Dim oFolder As Outlook.MAPIFolder

Set oNameSpace = oOutlook.GetNamespace("MAPI")

Set oFolder = oNameSpace.GetDefaultFolder(olFolderInbox)

Debug.Print oFolder.Name

Очень часто требуется пройти циклом по всем папкам в почтовом ящике Outlook (а иногда даже в нескольких ящиках), просмотреть все сообщения в каждой папке (и вложенных подпапках) и что-то сделать с этими сообщениями, например, собрать все письма от определенного отправителя, разбросанные по разным папкам, в одну специальную папку. В нашем примере мы просто пройдем циклом по всем папкам Outlook и выведем их имена, но, конечно, этот пример несложно передать так, чтобы он производил перебор всех элементов в каждой папке и что-нибудь с ними делал в зависимости от условия. В нашем случае удобнее всего использовать две процедуры, одна из которых будет вызвать саму себя:

Public Sub StartProc1()

Dim oOutlook As New Outlook.Application

Dim oNamespace As Outlook.NameSpace

Dim oChildFolder As Outlook.MAPIFolder

Set oNamespace = oOutlook.GetNamespace("MAPI")

 

'Перебираем каждую папку верхнего уровня и напускаем на нее процедуру DoFolder ()

For Each oChildFolder In oNamespace.Folders

DoFolder oChildFolder

Next

End Sub

 

Public Sub DoFolder(ByVal oFolder As MAPIFolder)

Dim oChildFolder As Outlook.MAPIFolder

For Each oChildFolder In oFolder.Folders

Debug.Print oChildFolder.Name

'На каждую дочернюю папку опять напускаем процедуру DoFolder ()

DoFolder oChildFolder

Next

 

End Sub

Теперь — о свойствах и методах коллекции Folders и объекта MAPIFolder.

У коллекции Folders свойства и методы стандартные, как у большинства коллекций ( Count, Item(), Add(), Remove() и т.п.). Зато у объекта MAPIFolder важных свойств и методов очень много. Вначале, как всегда, о самых важных свойствах:

  • AddressBookName — возможность поменять имя папки с контактами для отображения в адресной книге пользователя. Для других папок применяться не может (будет ошибка).
  • CurrentView — возможность вернуть объект View, который определяет, как отображается данная папка для пользователя. Для объекта MAPIFolder это свойство доступно только на чтение.
  • DefaultItemType — это свойство позволяет вернуть (в виде константного значения) тип элемента по умолчанию (почтовые сообщения, контакты и т.п.), который был назначен папке при создании. Это свойство определяется при создании папки и после этого изменено быть не может. Обычно это свойство используется для исключения каких-то папок из обработки (чтобы, например, не искать почтовые сообщения в папке с контактами).
  • DefaultMessageClass — то же самое, что и DefaultItemType, но информация возвращается не виде числа, а виде строкового значения. Выбирайте, что вам удобнее.
  • Description — просто описание папки. При использовании графического интерфейса Outlook доступно через свойства папки.
  • EntryID — аналог свойства PR_ENTRYID в объектной модели MAPI. Изначально предназначен для обеспечения взаимозаменяемости кода, но это свойство очень удобно использовать и просто как уникальный идентификатор сообщения. Этот идентификатор создается автоматически при появлении сообщения в любом MAPI-совместимом хранилище (например, файле Outlook или почтовом ящике Exchange Server) и изменяется только при переносе в другое хранилище.
  • FolderPath — полный путь к папке в иерархии хранилища Outlook, например, \\Личные папки\Входящие.
  • Folders — очень важное свойство, которое возвращает коллекцию вложенных папок для данной папки. Как уже говорилось, очень часто используется для того, чтобы пройти циклом по всему дереву папок.
  • InAppFolderSyncObject — определяет, будет ли эта папка синхронизироваться при работе специальной группы синхронизации (объекта SyncObject) под названием Application Folders. Эта группа синхронизации (то есть группа, которая видна через меню Сервис -> Отправить/Получить) — специальная группа, которая отличается тем, что только эту группу можно изменять программным образом.
  • IsSharePointFolder — позволяет определить, находится ли эта папка с контактами или элементами календаря на Windows SharePoint Services (для обеспечения коллективной работы). Обычно используется для проверок.
  • Items — еще одно важнейшее свойство. Обеспечивает доступ к коллекции Items — всем элементам данной папки. Подробнее про работу с элементами папок — в следующем разделе.
  • Name — это, конечно, имя папки.
  • ShowAsOutlookAB — показывать ли содержимое папки с элементами типа Контакты в окне выбора адреса при создании почтового сообщения. По умолчанию для всех папок с Контактами установлено в True. Обычно используется только тогда, когда какая-то папка с контактами используется для служебных целей.
  • ShowItemCount — определяет, что будет показываться строке сообщений внизу Outlook для папки: ничего, общее количество всех сообщений или общее количество только непрочитанных сообщений.
  • StoreID — MAPI-совместимый уникальный идентификатор хранилища, в котором находится данная папка. Выглядит как очень длинная строка (516 символов). Можно использовать для различения, например, нескольких почтовых ящиков Exchange.
  • UnReadIemCount — просто количество непрочитанных сообщений для данной папки. Доступно, конечно, только на чтение.
  • Views — возвращает коллекцию объектов View (режимов отображения), которые ассоциированы с данной папкой.
  • WebViewOn — возможность включить для папки отображение в виде страницы HTML (которая может быть совершенно посторонней и никак не связанной с элементами Outlook и самой этой папкой). Та страница, которую нужно отобразить, задается при помощи свойства WebViewURL. Эту возможность можно включить и на графическом интерфейсе: на вкладке Домашняя страница свойств папки.

То, что делают методы CopyTo(), MoveTo(), Delete(), AddToFavorites(), Display() — понятно из их названий. Метод GetExplorer() позволяет вернуть объект Explorer, представляющий эту папку в "Проводнике" Outlook.

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 
© 2004-2016, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru