Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Управление в маркетинге средствами электронной почты. Учебное пособие
.pdf
121
Рис. 35. ПодключениеобъектнойбиблиотекиExcel
ПослеустановкифлажкавстрокеMicrosoftExcel10.0Object
Libraryможнозапускатьнавыполнениемакросы,использующие
объектнуюмодельExcel.ВнашемслучаепредварительнонадискеDдолженбытьсозданфайлExcelсименемОтчет,ивэтом
файледолженбытьрабочийлистсименем«09».
Листинг27представляетмакроспередачиданныхизOutlook
вExcel.
Листинг 27. Передача данных из Outlook в Excel
Sub ОтчетОработеПередачаВexcel()
'назначение - передача информации из Заметки Outlook на рабочий
лист Excel
'подготовительная процедура для макроса Отчет о работе

122
Dim aOl As Outlook.Application
Dim iNote As Outlook.NoteItem
Dim aXl ‘ объявление объектной переменной Приложения Excel
Dim oXlSheet ‘ объявление объекта - листа Excel
Set aOl = New Outlook.Application
Set iNote = CreateItem(olNoteItem)
iNote.Body = «Body of the Note»
Set aXl = CreateObject(«Excel.Application»)
If aXl Is Nothing Then
MsgBox «Не удается открыть приложение Excel», vbCritical
Exit Sub
End If
aXl.Workbooks.Open FileName:=»D:\Отчет.xls»
Set oXlSheet = aXl.Sheets(“09”) ‘ссылка на объект - Лист Excel с именем
“09”
‘отчет за сентябрь
aXl.Visible = True
oXlSheet.cells(1, 1) = iNote.Body ‘в ячейку Excel с координатами
‘(1, 1) записывается
‘содержимое Содержание
‘(свойство Body) Заметки
End Sub
Послетогокакмыубедилисьвработоспособноститехнологии, можно приступить непосредственно к выполнению задачи
педачиданных изOutlook в Excel.Эта задачарешаетсяс помощьюмакросапредставленноговЛистинг28.
Листинг 28. Передача данных о работе из Outlook в Excel
Sub ОтчетОработе()
Dim aOl As Outlook.Application
Dim oNS As Outlook.NameSpace
Dim oFA As MAPIFolder ' Объект - Appointments Folder
Dim cA As Items ‘ Коллекция Встреч

123
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.Find(«[location]=»»Текстильщики»» and [End]>»»1/09/2005»»
_and [End]<»»30/09/2005»»»)
Set aXl = CreateObject(«Excel.Application»)
If aXl Is Nothing Then
MsgBox «Не удается открыть приложение Excel», vbCritical
Exit Sub
End If
aXl.Workbooks.Open FileName:=»D:\Отчет.xls»
Set oXlSheet = aXl.Sheets(«07») ' ссылка на объект - лист Excel
aXl.Visible = True
aXl.Columns(«D:D»).ColumnWidth = 45
‘ просматриваются и передаются в Excel все элементы подмножества
‘ Встреч, удовлетворяющие критерию поиска
i = 7
Do Until iA Is Nothing
oXlSheet.cells(i, 1) = Format(iA.Start, «dd:mm»)
oXlSheet.cells(i, 2) = (iA.Duration) / 360
oXlSheet.cells(i, 4) = iA.Subject
Set iA = cA.FindNext 'перемещение к следующей Встрече,
‘удовлетворяющей критерию поиска
i = i + 1 ‘перемещение по строкам таблицы Excel

124
Loop
oXlSheet.cells(i, 1) = «Итого»
oXlSheet.cells(i + 1, 1) = «По штату»
oXlSheet.cells(i + 1, 2) = 60
oXlSheet.cells(i + 2, 1) = «Переработка»
End Sub
Рисунок36иллюстрируетрезультатвыполнениямакроса.
Рис. 36. ОтчетвExcelопроделаннойработе
Отрицательныйрезультатв ячейкеВ16не долженсмущать:
«расписание»составленокакпример,ивэтомпримереобъемнагрузкименьшенормативной.Полезнопосмотреть наэтузадачу

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

126
Можно указать несколько способов создания Сообщения.
Способ, который очень часто используюти которыйнельзя назвать удачным,состоит в том, что выполняется последовательностькоманд
Меню>Файл>Создать>Сообщение
ВрезультатенаэкранепоявляетсястандартнаяформаСооб-
щение.
ВстандартнойформеСообщениеосуществляетсящелчокпо
кнопкеКому,врезультатена экранепоявитсяокноВыбор имен.
Рисунок37иллюстрируетвозникшуюситуацию.Выбиратьнеобходимые Контактыв Адресной книге менее удобно,чем среди
структурированныхвиерархиюпапокпапкиКонтакты.
Напрактикеоказалось оченьудобнымписатьписьмав текстовомпроцессореWordиотправлятьихизэтогожеприложения.
Рисунок38иллюстрируетэтуситуацию.
Ноесливыведетеинтенсивнуюпереписку,товозможно,что
есть5–7партнеров,ккоторымвыобращаетесьсосвоимисообщенияминаиболеечасто.Например,высколлегамиработаетенад
совместным проектом. И всякий раз вам необходимо выбирать
необходимогоадресата, но главное,всякий раз необходимо писатьобращение, подписи,некоторыеформальныеобороты. Это
небольшоевремя.Ноиз-заподобныхмелочейчастонеэффективнорасходуютсязначительныересурсы.
Замысел макроса
Макрос запускается из пользовательского меню или щелчкомпокнопкенапанеликоманд.Задачамакросасостоиттолько
втом,чтобыопределитьадресэлектроннойпочтыадресата.Названиемакросаассоциируетсясименемилифамилиейадресата.
МакросвызываетпроцедурусименемПисьмо.Впроцедуревкачестве формальногопараметраиспользуетсяадресэлектронной
почты(АЭП).Листинг29представляеткодмакроса.

127
Рис. 37.Выборадресатаизадреснойкниги
Листинг 29. Вызов процедуры создания основы Сообщения
Sub Андрей()
'Блок объявлений
Dim АЭП As String 'адрес электронной почты
'Блок присваивания значений переменным
АЭП = «kupr_05@mail.ru»
Call Письмо(АЭП)
End Sub
Листинг30 представляетпроцедурусозданияосновыСооб-
щениядлявыбранноговпользовательскомменюадресата.

128
Рис. 38.ОтправкасообщенияизтекстовогопроцессораWord
Листинг 30. Процедура создания Сообщения
для наиболее частых Адресатов
Sub Письмо(АЭП)
'Блок объявлений
Dim aOl As Outlook.Application 'объектная переменная Приложение
Outlook
Dim oNS As Outlook.NameSpace 'объект NameSpace
Dim oFCn As MAPIFolder 'объект - Папка MAPI

129
Dim cCn As Outlook.items ‘коллекция Контактов
Dim iM As MailItem ‘элемент Сообщение электронной почты
Dim iCn As Outlook.ContactItem 'элемент Контакт
Dim lt As String 'текст Сообщения
Dim СтрПоиска As String
‘Блок присваивания значений переменным
Set aOl = New Outlook.Application
Set oFCn = aOl.GetNamespace(«MAPI»).Folders(«Личные папки»). _
Folders(«Контакты»).Folders(«Процессы»)
Set cCn = oFCn.items
СтрПоиска = «[Email1Address] = « & АЭП
Set iCn = cCn.Find(СтрПоиска)
If iCn Is Nothing Then ‘возможно, если Контакт будет удален или будет
‘изменен адрес электронной почты (АЭП)
‘в таком случае следует осуществлять выход
‘ из макроса MsgBox “Контакт не найден”
Exit Sub
End If
Set iM = Application.CreateItem(olMailItem)
iM.BodyFormat = olFormatPlain ‘Сообщение будет в текстовом формате
‘Блок формирования Сообщения
lt = “Уважаемый “ & iCn.NickName & “!” & Chr(13) & Chr(13)
lt = lt & “Направляю “ & Chr(13)
lt = lt & “С уважением, Дм. Куприянов”
iM.To = iCn.Email1Address
iM.Subject = “ВШЭ: Учебный процесс”
iM.Body = lt
iM.Send
End Sub

130
Для часто отправляемых сообщений целесообразно создать
пользовательскуюПанель инструментов.Дляэтогонеобходимо
выполнитьалгоритм
МенюСервисНастройка
Впоявившемсяокне(рис.39)необходимовыбратьвкладкуПа-
нели инструментов,далеещелкнутьпокнопкеСоздатьивпоявившемсяокнеопределитьимяПанели инструментов (Адресаты).
Рис. 39. Определениеименипанелиинструментов
Далее необходимона созданной Панели инструментов разместитькнопкизапускамакросовсозданияСообщений.Дляэтогоснованужновыполнитьалгоритм
МенюСервисНастройка
Впоявившемсяокне необходимовыбратьвкладкуКоманды
ив окнеКоманды —опцию Макросы.Далее необходимопере-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
