Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Управление в маркетинге средствами электронной почты. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
111
Рис. 31. Определениесвойствэлементауправления
Может представлять интерес также свойство Font, которое позволяетопределитьтипиразмершрифта,используемоговна­званииКомандной кнопки.
Если дважды щелкнуть по команднойкнопке, то откроется знакомаяуженам средаразработкиVisualBasicEditor(рис.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 выполнить последовательностькоманд
MenuToolsReferences
Рисунок 33 представляет результат выполнения указанных действий.
115
Рис. 33. ПодключениебиблиотекиOutlook
ПослеустановкифлажкавстрокеMicrosoftOutlook10.0Object 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:00AM#
Согласитесь,представление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выполнитьпоследовательность команд
MenuToolsReferences
Рисунок35иллюстрируетрезультатвыполненияалгоритма.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]