Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Управление в маркетинге средствами электронной почты. Учебное пособие
.pdf
111
Рис. 31. Определениесвойствэлементауправления
Может представлять интерес также свойство Font, которое
позволяетопределитьтипиразмершрифта,используемоговназванииКомандной кнопки.
Если дважды щелкнуть по команднойкнопке, то откроется
знакомаяуженам средаразработкиVisualBasicEditor(рис.32),
ноужесзаголовкомпроцедурыобработкисобытия.

112
Рис. 32. РедакторVBEвExcel
СредаразработкипроцедурвExcel оченьблизкак среде разработки процедур Outlook. В проводнике VBE отметим среди
объектовMS Excel Листы, по количествуЛистов в Книге Excel
(внашемслучае—Лист1иЛист2).Чтобы,например,манипулироватьданными Лист2,необходимов Проводнике проекта дваждыщелкнутьмышьюпоЛист2—врезультатеоткроетсясоответствующиймодуль.
После двойногощелчкапо кнопкена рабочемлисте вVBE
будутавтоматически созданызаголовокпроцедурыи строказавершенияпроцедуры
Private Sub ПередатьВOutlook_Click()
End Sub
Вставимвкачестветелапроцедурыоператор
MsgBox “My Excel Macro”
ПоместимкурсорвтелепроцедурыинажмемнаклавишуF5
(запустимпроцедуруобработкисобытиянавыполнение)—врезультатеполучим соответствующее сообщение. Таким образом,
намисозданапростейшаяпроцедураобработкисобытия.
Перейдем к более сложной задаче. Но снова акцентируем
вашевниманиенатом,чтонеобходимоотрабатыватьпроцедуры

113
поэтапно.Листинг23представляетпроцедуруобработкисобытия
щелчком по кнопке для передачи информациииз Excel Outlook
орасписаниизанятий.
Листинг 23. Макрос передачи данных из Excel в Outlook
Private Sub ПередатьВOutlook_Click()
Dim i As Integer ‘параметр цикла перемещения по строкам
таблицы Excel
Dim Пара As Date ‘время начала учебной пары
Dim N As Integer ‘общее количество всех видов занятий
N = 9 ‘в демонстрационном примере только 4 занятия
For i = 5 To N ‘цикл начинается с 10, поскольку все, что в таблице
выше 10-й
‘строки, есть заголовок таблицы последовательности
‘чтобы упростить ввод, в таблице Excel указывается номер пары,
‘а не время начала занятия
‘Outlook же должен оперировать со временем, поэтому осуществляет
переход от
‘номера пары ко времени ее начала
If Cells(i, 8) = 1 Then
Пара = #9:00:00 AM#
ElseIf Cells(i, 8) = 2 Then
Пара = #12:00:00 PM#
ElseIf Cells(i, 8) = 3 Then
Пара = #3:00:00 PM#
ElseIf Cells(i, 8) = 4 Then
Пара = #6:00:00 PM#
Else
MsgBox «Ошибка ввода»
End If
MsgBox “Номер занятия - “ & i & vbCrLf _
& “Номер занятия - “ & Cells(i, 1) & vbCrLf _
& «Пара» & Пара
Next i
End Sub

114
Комментарии к процедуре
Параметрциклаiизменяетсяот6до10.Онопределяетномер
строкирабочеголистаExcel.Первые5строкпредставляютсобой
заголовоктаблицырасписания.Максимальноезначениепараметрацикларавно 10,т.к.в демонстрационномпримерезаписаны
только4занятия.
Дляудобстваработышапкатаблицызавершаетсянумерацией
столбцов — это обязательно следует сделать, т.к. существенно
упроститработускодом.
В теле цикла основную часть занимает условный оператор,
который преобразует номер пары во время. Посколькуi — это
номерстроки,топервуючастьусловногооператора
If Cells(i, 8) = 1 Then
Пара = #9:00:00 AM#
следует читать следующим образом: если в ячейке i-ой строки
и 8-го столбцазаписана 1, то занятие начнется в 9 часов утра;
впротивномслучае…
Следуетобратитьвниманиенато,какопределяетсявпроцедуретипданныхдата/время.БуквыAMозначаютвремядополудня,PM—послеполудня.
ВоператореMsgBoxвыводитсятолькочастьинформации—
наэтомэтапенамважнопонять,чтомыможемсчитатьинформациюсЛистаExcel.
Теперьнамнеобходимопередатьинформациюизприложения
ExcelвприложениеOutlook.Чтобыполучитьдоступкобъектной
моделиOutlook, необходимов Excel в режиме VBE выполнить
последовательностькоманд
MenuToolsReferences
Рисунок 33 представляет результат выполнения указанных
действий.

115
Рис. 33. ПодключениебиблиотекиOutlook
ПослеустановкифлажкавстрокеMicrosoftOutlook10.0Object
Libraryможнозапускатьнавыполнениеследующиймакрос.
Листинг 24 представляет макрос передачи информации
вOutlook.
Листинг 24. Передача информации в Outlook
Private Sub ПередатьВOutlook_Click()
‘Блок объявлений
Dim aOl As Outlook.Application ‘внешнее по отношению к Excel
‘приложение
Dim iA As Outlook.AppointmentItem 'элемент Outlook Встреча
Dim i As Integer ‘параметр цикла перемещения
‘по строкам таблицы Excel

116
Dim Пара As Date ‘время начала учебной пары
Dim N As Integer ‘общее количество всех видов занятий
Set aOl = CreateObject(«Outlook.Application»)
N = 9 ‘в демонстрационном примере
‘только 4 занятия
For i = 5 To N ‘цикл начинается с 5, поскольку все,
‘что в таблице выше 10-й строки,
‘есть заголовок таблицы последо-
‘вательности чтобы упростить ввод,
‘в таблице Excel указывается номер
‘пары, а не время начала занятия.
‘Outlook же должен оперировать
‘со временем. Поэтому осуществляет
‘переход от номера пары ко времени
‘ее начала
If Cells(i, 8) = 1 Then
Пара = #9:00:00 AM#
ElseIf Cells(i, 8) = 2 Then
Пара = #12:00:00 PM#
ElseIf Cells(i, 8) = 3 Then
Пара = #3:00:00 PM#
ElseIf Cells(i, 8) = 4 Then
Пара = #6:00:00 PM#
Else
MsgBox «Ошибка ввода»
End If
Set iA = CreateItem(olAppointmentItem) 'создание Встречи Outlook
‘определение свойств созданной Встречи
With iA
.Companies = «ИПП»

117
.Location = «Новослободская»
.Start = Cells(i, 7) + Пара
.Subject = Cells(i, 6)
.End = .Start + #3:00:00 AM#
.Save ‘на этапе отладки лучше использовать метод Display
Next i
End Sub
Рисунок 34 иллюстрирует результат выполнения макроса.
Чтобыполучитьтакоепредставление,необходимодляпапкиКа-
лендарьнаПанели командвыбратьТекущее представлениеРабо-
чая неделя.
Рис. 34.РезультатпередачирасписаниявOutlook
Дополнительнонеобходимоотметитьособенностиработысдатами.ФорматExcelпредполагаетзаданиедатввиде:месяц,число,
год.Еслизаписыватьдатуввидечисла,месяцаигода,тобудетвыданаошибканесовпадениятипов.СвойствоStartэлементаOutlook
Встречапредставляетсобойсовокупностьдатыивремени.Время
намибылополученоизтаблицырасписаниязанятийсиспользова-

118
ниемусловногооператора.Вседьмомстолбцетаблицырасписания
занятийзаписаныдатыпроведениязанятий.Выражение
Start = Cells(i, 7) + Пара
дастдатуивремяпроведениязанятия.
Посколькузанятиедлитсятриастрономическихчаса,тодата
ивремяокончаниязанятиябудутопределятьсячерезвремяначалазанятиявсоответствиисвыражением
.End=.Start+#3:00:00AM#
Согласитесь,представлениеOutlook(рис.34)таблицырасписаниязанятийвыглядитпредпочтительнее,чемвExcel(рис.28).
Ноглавноевтом,чтоработасрасписаниемвOutlookвпринципе
исключаетнакладкизанятий.
Вомногихнегосударственныхвузахотпреподавателейтребуютпредоставленияотчетовопроделаннойработе(проведенных
занятиях).Это,посути,хотяивнесколькодругойформе,обратнаязадачапоотношениюкрассмотреннойвыше,т.е.необходимо
порасписаниюучебныхзанятийвпапкеКалендарьприложения
Outlook составить таблицу Отчета. Для решения этой задачи
необходиморешитьрядчастныхзадач:
научиться отфильтровывать в папке1) Календарь Встречи
порядусвойств(дляуказанногомесяца,указаннойорганизации,
указаннойкатегорииит.д.);
научитьсяизOutlookформироватьтаблицыExcel(параме-2)
трыячеек,шапкииитоговыечаститаблиц);
научитьсяизOutlookпередаватьв Excel данные и управ-3)
лятьвычислениями.
Всоответствиисуказаннымипунктамирешим ряд частных
задач.
Фильтрация встреч
Посколькуотчеты нужнопредставить в различные учебные
заведения, то необходимо весь график работы отфильтровать.

119
ВнашемслучаеэтоможносделатьиспользуясвойствоМестопо-
ложение элементаВстреча.
Листинг 25. Фильтрация встреч по местоположению
Sub ОтчетОработеПоискМестоположения()
On Error Resume Next
Dim aOl As Outlook.Application
Dim oNS As Outlook.NameSpace
Dim oFA As MAPIFolder ' Объект Appointments Folder
Dim cA As Items ‘ Коллекция Встреч
Dim iA As Outlook.AppointmentItem
Set aOl = New Outlook.Application
Set oNS = aOl.GetNamespace(«MAPI»)
Set oFA = aOl.GetNamespace(«MAPI»).Folders(«Личные папки»)
.Folders(«Календарь»)
Set cA = oFA.Items
‘отыскивается первая встреча на Новослободской в сентябре месяце
Set iA = cA.Find(«[location]=»»Новослободская»» and _
[start]>»»1/09/2005»» and [End]<»»10/09/2005»»»)
Do Until iA Is Nothing
iA.Display
Set iA = cA.FindNext ‘ перемещение к следующей Встрече,
‘удовлетворяющей критерию поиска
Loop
End Sub
Приотладкемакросов,возможно,у вас, так же, какуменя,
возникнет необходимость удалить элементы. Листинг 26 представляетмакрос,обеспечивающийтакуювозможность.
Листинг 26. Удаление элементов из папки Календарь
Sub ВстречиУдалитьВсе()
On Error Resume Next

120
Dim aOl As Outlook.Application
Dim oNS As Outlook.NameSpace
Dim oFA As MAPIFolder ' Объект - Appointments Folder
Dim cA As Items ‘ Коллекция Встреч
Dim iA As Outlook.AppointmentItem
Dim aXl ‘ объявление объектной переменной
‘ Приложения Excel
Dim oXlSheet ‘ объявление объекта - листа Excel
Dim i As Integer ' номер текущей строки листа Excel
Set aOl = New Outlook.Application
Set oNS = aOl.GetNamespace(«MAPI»)
Set oFA = aOl.GetNamespace(«MAPI»).Folders(«Личные папки»)
.Folders(«Календарь»)
Set cA = oFA.Items
Set iA = cA.GetFirst
Do
Set iA = cA.GetNext ‘ перемещение к следующей Встрече,
iA.Delete
Loop Until iA Is Nothing
End Sub
Естественно, несложной модификацией представленного
макросаможнообеспечитькакудалениеэлементовдругихпапок,
таки удалениеэлементовколлекции, удовлетворяющихопределеннымусловиям.
Доступ из Outlook к объектной модели Excel
Чтобы получить из Outlook доступ к объектной модели
Excel,необходимоврежимеVBEвыполнитьпоследовательность
команд
MenuToolsReferences
Рисунок35иллюстрируетрезультатвыполненияалгоритма.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
