|
Программирование >> Проектирование интерфейса пользователя
3 : Debug.Print Outlook.GetNameSpace( MAPI ).GetDefaultFolder( olFolderContacts ). Items ( Lori Kiiranel ) 4: End Sub fI В строке 2 объявляется и создается экземпляр Outlook, а строка 3 содер-I щццщц.. выражение, иллюстрирующее иерархию членства объектов, относящихся к классу NameSpace. Просмотр информации о контактах Outlook в Access В настоящем и последующих разделах главы содержится ряд примеров практического использования информации Outlook во внешнем приложении. Листинг 24.5 демонстрирует способы доступа к данн1м о контактах посредством манипуляций с соответствующим объектом MAPlFolder. Листинг 24.5. Пример процедуры для просмотра информации о контактах Outlook 2 3 4 5 б Su ctsFolder( ) Dim Outlook As New Outlook.Application Dim NameSpace As NameSpace Set NameSpace = Outlook.GetNameSpace ( MAPI ) Dim ContactFolder As MAPlFolder Set ContactFolder = NameSpace . GetDef aultFolder ( olFolderContacts ContactFolder.Display End Sub В строкам 6 листинга 24.5 выполняются операции создания экземпляра Outlook и объекта NameSpace, а также построения ссылки на папку, содержащую информацию о контактах. Метод Display класса MAPlFolder, который вызывается в строке 7, откр1вает окно экземпляра Outlook, созданного ранее, и передает фокус элементу Контакты (Contacts) дерева, отображаемого в дочернем окне Список папок. Листинг 24.5 демонстрирует один из способов управления пользовательским интерфейсом Outlook из внешней прикладной программы. Приведенн1й пример, текст которого отображен в листинге 24.6, иллюстрирует возможности доступа к каждому из элементов коллекции контактов. Обладая сс1лкой на элемент данных, вы можете решать какие угодно задачи. Листинг 24.6. Пример процедуры циклической обработки элементов данных о контактах 5 6 : 7: Sub IterateContacts ( ) Dim Outlook As New Outlook.Application Dim NameSpace As NameSpace Set NameSpace = Outlook.GetNameSpace( MAPI ) Dim ContactFolder As MAPlFolder Set ContactFolder = NameSpace.GetDefaultFolder(olFolderContacts) Dim Contactitem As Variant For Each Contactitem In ContactFolder.Items 9: Debug.Print Contactltem 10: Next Contactltem 11:End Sub Строка 1-6 вы видели уже несколько раз. Строка 6 содержит инструк-ll цию получения ссылки на объект MAFIFolder, имеющий отношение к информации о контактах. Атрибут ltems класса MAFlFolder - это обычная коллекция, и к ней применимы все известные вам операции. Например, задача прохождения по элементам коллекции легко решается с помощью цикла For Each . . . Next, индекс которого задается переменной типа Variant (строка 7). В этой ситуации, кроме того, применима и циклическая конструкция For . . . Next, на каждом шаге которой очередной элемент коллекции должен быть присвоен переменной типа Variant. Процедура листинга 24.6 осуществляет вывод содержимого элемента коллекции контактов в окно lmmediate; впрочем, внутри цикла вы можете выполнять любые другие операции - скажем, редактирование элемента данных, его форматирование или печать, отображение в графических визуальных компонентах, занесение в файл отчета или пересылку по электронной почте. В следующем разделе предлагаются примеры, демонстрирующие способы изменения данных Outlook. Обновление информации Outlook из внешних приложений Изменяется наша жизнь - изменяется и информация. Телефонные компании, обрадованные и одновременно озабоченные ростом количества абонентов, вынуждены добавлять к телефонным номерам новые префиксы. Фирмами и физическими лицами ежедневно открываются сотни Web-сайтов. Адресаты переходят на новую работу, компании переезжают в новые офисы - как уследить за непрерывно обновляющейся информацией? Производительность будет минимальной, если вы будете перебирать вручную десятки, а то и сотни адресов или телефонных номеров. Напишите несколько процедур и возложите все эти неприятные обязанности на плечи Access. Листинг 24.7 демонстрирует простой пример, связанный с модификацией телефонных номеров. Немного фантазии - и вы сможете расширить эту процедуру, снабдив ее средствами поддержки графического интерфейса, ведения протокола изменений и т.п. Листинг 24.7. Пример процедуры обновления данных о контактах 1: Su eaCodes ( ) Dim Outlook As New Outlook.Application 5 Dim NameSpace As NameSpace Set NameSpace = Outlook. GetNameSpace ( M7\PI ) Dim ContactFolder As MAPlFolder Set ContactFolder = NameSpace.GetDefaultFolder(olFolderContacts) Dim I As Integer, Offset As Integer For I = 1 To ContactFolder.Items.Count 13: Wit der. Items ( I ) 14: If (InStrd, .BusinessTelephoneNumber, (313) > 0) Then 15: .BusinessTelephoneNumber = 16: Replace(.BusinessTelephoneNumber, (313) , (810) ) 17: .Save 18: End If 19: End With 20: Next I 21:End Sub Ii Строк-8 получают объект MAPder для контактов. Строка 10 со- I держит объявление целочисленной переменной, которая будет использована в цикле. Заголовок цикла размещен в строке 12. Следующая за ним конструкция with призвана исключить необходимость повторения постоянного префикса ContactFolder. Items (I) при наборе кода. Принадлежность переменной очередному элементу коллекции, Items (I), обусловливается символом точки предшествующим имени, и самим фактом упоминания переменной внутри блока With . . . End With. (Если мне не изменяет память, конструкция With . . . End with на страницах нашей книги еще не появлялась. Более подробные сведения о ней вы найдете далее, рядом с пиктограммой примечания.) Остальная часть текста процедуры листинга 24.7 должна быть вам понятна. Конструкция на основе служебного слова with облегчает задачу многократного обращения к атрибутам одного и того же глубоко вложенного объекта. Например, выражение With ContactFolder. Items (I) позволяет избежать необходимости повторения постоянного префикса, ссылающегося на элемент коллекции Items из состава Con-tactFolder. Чтобы указать на принадлежность атрибута этому объекту, достаточно ввести оператор точки (.) - скажем, .BusinessTelephoneNumber. Поиск заданной строки в сообщениях электронной почты Объекты класса используются в нескольких почтовых коллекциях данных (или, с точки зрения пользователя, папках) это (см. рис. 24.1 и табл. 24.1) Входящие (Inbox), Исходящие (Outbox), Отправленные (Sent Items), Черновики (Drafts) и Удаленные (Deleted Mail). Объект Mailltem сохраняет информацию об отправителе и получателях сообщения, а также о его содержимом. В этом разделе будет рассмотрен пример процедуры, решающей задачу поиска литеральной символьной строки в сообщениях электронной почты. Вы наверняка мечтали о волшебном решете, которое смогло бы помочь быстро просеивать сообщения электронной почты. Теперь вы получаете реальную возможность самостоятельного решения подобной задачи. Все, что необходимо - это небольшой блок кода на языке VBA и Automation-сервер Outlook. Внимательно изучите листинг 24.8.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |