Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Управление в маркетинге средствами электронной почты. Учебное пособие
.pdf
81
Select Case i
Case 0
If infoArray(i) <> «Регистрация» Then
MsgBox “Сообщение не подходит для регистрации”
Exit Sub
End If
Case 1
iCn.CompanyName = infoArray(i)
Case 2
MsgBox “Год поступления” & infoArray(i)
Case 3
MsgBox «Факультет» & infoArray(i)
Case 4
MsgBox «Форма обучения» & infoArray(i)
Case 5
MsgBox «Специальность» & infoArray(i)
Case 6
iCn.FullName = infoArray(i)
Case 7
iCn.NickName = infoArray(i)
Case Else
End Select
Next i
iCn.Display
End Sub
а г 5. Ра б о т а С ф у н к ц и е й InSt r ()
Ш
Есливаудиторииприсутствуетбольше100человек,которымобъяснено,какимобразомнеобходимозаполнитьполеТема сообщения,
тоэтоне значит, чтовы получите100правильнооформленныхСо-
общений.Естьошибки,естьневнимательность,естьнеспособность
работатьболееилименееорганизованно.Такилииначе,необходимо
произвестиклассификациюСообщенийвпапкеВходящиена
спам;a)
неправильно оформленныеb) Сообщения, которые нуждаютсявуточнениях;

82
правильно оформленныеc) Сообщения, на основе которых
необходимосоздатьКонтакты.
Первыедолжныбытьуничтожены.Вторыемогутбытьобработанывручную,илииммогутбытьнаправленыПравила оформ-
ленияСообщения.
ОпределитьпринадлежностьСообщениякодномуизуказанныхклассовможноиспользуястандартнуюфункциюVisualBasic
InStr().
Функциявозвращаетпозициювхожденияоднойстрокисимволоввнутридругой.Описаниефункцииможнонайтивкнигах
ГарнаеваиКузьменко[3: с. 252; 5:с.791]иливСправочной си-
стеме VisualBasic.Синтаксисфункцииимеетследующийвид
Str([Start],String1,String2,Compare)
Start — необязательный аргумент, задающий начальную
позициюдля поиска;по умолчаниюпоиск начинаетсяспервой
позиции;аргументStartявляетсяобязательным,еслиуказывается
аргументCompare;
String1—обязательныйаргумент,представляющийстроковоевыражение(строку),вкоторомвыполняетсяпоиск;
String2—обязательныйаргумент,представляющийстроковоевыражение,поискположениякотороговString1выполняет
функция;
Compare—необязательныйаргумент,определяющийтип
сравнениястрок. Еслиаргумент неопускается, тоиспользуется
сравнениесогласнооператоруOption Compare.
Листинг 14 представляет макрос, иллюстрирующий работу
функцииInStr().
Листинг 14. Работа функции InStr()
Sub InStrTest()
'отработка функции работы со строками
'состояние - рабочее
Dim Предложение As String 'Строковая переменная
Dim Слово As String 'Строковая переменная
Dim Позиция 'Строковая переменная
Слово = «Регистрация» 'присваиваем строковой переменной значение

83
Предложение = «Регистрация; МИПП; 2002; эк; дн; мн; Андрей»
'Определяем место вхождения Слова в Предложение
Позиция = InStr(Предложение, Слово)
MsgBox «Позиция - « & Позиция
End Sub
Поэкспериментируйтесмакросом.Например,еслизапустить
макрос на выполнение, то на экране появится Окно сообщения
(рис24).
Рис. 24.ЭкспериментработысфункциейInStr()
ЕслижевначальныхусловияхпеременнойСлововместозначения«регистрация» присвоить значение «рация», тона экране
появитсяОкно сообщения,представленноенарисунке25.
Рис. 25. ЭкспериментработысфункциейInStr()
Этоозначает,чтофункцияVisualBasicInStr()работаетвсоответствиисееописанием.Вовсякомслучае,проведенныйэкспериментпозволяетнадеяться,чтонамудастсяопределитьналичие
взаданнойстрокенеобходимогонамслова.

84
Несколькоусложнимзадачу.Предположим,чтодопускается
наличиевстрокеоднойошибки.Тогдакобработкебудетпринята строка,еслиправильно написано либослово «Регистрация»,
либоназваниевуза.Внашемслучаеэтоаббревиатурыназваний
двух вузов: РГГУ и МИПП. Листинг 15 представляет макрос,
определяющийпо заданномупредложениюегопринадлежность
кзаданномуклассу.
Листинг 15. Определение режима регистрации Контакта
Sub РежимРегистрации()
'состояние - рабочее
Dim Предложение As String
Dim Слово As String
Dim Registration
‘блок исходных данных
Слово = “РГГУ”
Предложение = _
“Регистрация; РГГУ; 2002; эк; дн; мн; Гончаров Андрей Николаевич; Андрей”
Select Case Слово
Case “Регистрация” ‘случай правильно введенного слова
‘Регистрация
Registration = InStr(Предложение, Слово)
MsgBox “Правильно введенное слово - Регистрация”
Case “РГГУ” ‘случай правильно введенного слова РГГУ
Registration = InStr(Предложение, Слово)
MsgBox “Правильно введенное слово - РГГУ”
Case “МИПП” ‘случай правильно введенного слова МИПП
Registration = InStr(Предложение, Слово)
MsgBox “Правильно введенное слово - МИПП”
Case Else ‘случай отсутствия правильно введенных слов
MsgBox “Предложение не содержит необходимых для Регистрации слов”
End Select

85
If Registration > 0 Then MsgBox «Будет зарегистрирован Контакт»
End Sub
Ш
а г 6. Ра б о т а ф у н к ц и и MS g Bo x ()
ВходящееСообщениеможетбытьлибоудалено,либовызвано
намонитордляпрочтения,либооставленовпапкедляпоследующегопрочтения.Дляпринятиярешениявтакойситуацииможно
использоватьфункциюMsgBox().Вмакросахдлявыводаинформации нами достаточночасто использовался оператор MsgBox.
НовVBAтакжесуществуетфункцияMsgBox(),котораявыводит
наэкрандиалоговоеокно,содержащеесообщение,ачащевопрос,
иоднуилинесколькокнопок.Пользователюнеобходимосделать
выборнажатиемкнопки.ВрезультатефункциявозвратитзначениетипаInteger,указывающеенасделанныйвыбор.Листинг16
иллюстрируетработусфункцией.
Листинг 16. Работа с функцией MsgBox()
Sub tMsgBox()
Dim aOl As Outlook.Application
Dim oNS As Outlook.NameSpace
Dim cAL As Outlook.AddressLists
Dim oAL As Outlook.AddressList
Dim i As Integer
Dim iMsgbox As Integer
Set aOl = CreateObject(«Outlook.Application»)
Set oNS = aOl.Application.GetNamespace(«MAPI»)
Set cAL = oNS.AddressLists
For i = 1 To cAL.Count
Set oAL = cAL.Item(i)
MsgBox «Имя AddressList « & « is « & oAL.Name _
& vbCrLf & “ Номер - « & i & « of « & cAL.Count, vbInformation
‘операторы iMsgBox ... дают одинаковый результат, но второй много
предпочтительнее
‘259 = 3 + 256; 3 — это кнопки Да - Нет - Отмена

86
‘256 определяет Нет как кнопку по умолчанию
iMsgbox = MsgBox(“Удалить Сообщение - ?”, 259, vbDefaultButton2)
iMsgbox = MsgBox(“Удалить Сообщение - ?”, vbYesNoCancel, vbDefaultButton2)
MsgBox cAL.Item(i).Name
Select Case iMsgbox
Case 6
'MsgBox «iMsgbox - « & iMsgbox & «Delete folder»
Case 7
'MsgBox «iMsgbox - « & iMsgbox
Case Else
MsgBox «Case else»
End Select
Next i
End Sub
Синтаксисфункцииимеетследующийвид:
MsgBox(Prompt[,Buttons],[,Title],[,HelpFile,Context])
ФункцияMsgBox()имеетследующиеименованныеаргументы:
Prompt — обязательный аргумент, представляющий собой
строку-вопросилистроку-сообщение.
Buttons— число, представляющее суммузначений,которое
указываеттип отображаемыхкнопок,модальностьокна и кнопкупо умолчанию.Вмакросе Buttons =3+256.Этоможетбыть
прочитаноследующимобразом:3означает,чтовокне Сообще-
ния будут 3 кнопки Да, Нет, Отменить; 256 означает, что по
умолчаниюбудетиспользоватьсявтораякнопка,т.е.кнопкаНет.
Нов макросе приведени другойспособ решения задачи— используетсяконстантаVisualBasicvbYesNoCancel.Использование
константы,с нашей точки зрения, является предпочтительным,
посколькупозволяетпрощепонятьсмысл.
Title—строкавзаголовкеокнаСообщения.
АргументыHelpFileиContextнамине использовались,поэтомуониописыватьсянебудут.

87
Ша г 7. пР о в е Р к а а д Р е С а т а в п а п к е ко н т а к т ы
Посколькунеобходимокаквцеляхобеспечениябезопасности
информационнойсистемы,такивцеляхэкономиивременизащищатьсяотспама,торазумноизбратьтакуюстратегию:
принимать к рассмотрению либо сообщения, соответ-−
ствующиекоторымКонтактыужесозданывпапкеКонтакты;
либо принимать к рассмотрению сообщения, соответ-−
ствующиекоторымКонтактыотсутствуютвпапкеКонтакты,
новихполеТема,содержитсястрока,анализкоторойпозволяет
предполагать,чтонаосновеСообщениявпапкеконтактыдолжен
бытьсоздансоответствующийКонтакт.
Листинг17представляетмакроспоискаКонтактапоадресу
электроннойпочтывпапкеКонтакты.
Листинг 17. Поиск Контактов
Sub КонтактНайтиПоАдресу()
'Источник: Kent, page 63
Dim aOl As Outlook.Application
Dim oNS As Outlook.NameSpace
Dim oF As Outlook.MAPIFolder
Dim cC As Items
Dim iC As Outlook.ContactItem
Dim strTemp As String ‘строка, которую необходимо найти среди свойств
Контакта
Set aOl = New Outlook.Application
Set oNS = aOl.GetNamespace(«MAPI»)
Set oF = oNS.GetDefaultFolder(olFolderContacts)
Set cC = oF.Items
Set iC = cC.GetFirst
Set iC = cC.Find(«[Email1Address]=»»james@mail.ru»»»)
If iC Is Nothing Then
MsgBox «Contact is not found»
Exit Sub
Else
iC.Display
End If
End Sub

88
Ша г 8. об ъ е д и н е н и е Р а б о т а ю щ и х м а к Р о С о в
В принципе, с чего начатьобъединение,— дело вкуса. Но,
видимо, все же имеет смысл в качестве базового выбрать Листинг 13. Важно здесь то, что необходимоаккуратносохранять
каждыйудачносделанныйшаг.
КонтактовВходящих
Другаяситуация. Несмотря на то, что правила регистрации
подробнейшимобразомразъясняются,неменьше половины писемрегистрациисоставляютсятак,чтоавтоматически,сиспользованиемпрограммыихобработатьнеудается.Одинизспособов
выйтиизположения,т.е.создатьправильныйКонтакт,состоит
в следующем.Вам можетбыть понятным, что некоторые сообщения принадлежат студентам одной из учебных групп. Тогда
необходимовыделитьэтисообщения, используямышьи клавишуСtrl, и далеезапустить макрос СозданиеКонтактовповыделеннымвходящим.ПосколькувыбудетевыделятьСообщения
впапкеВходящие,этобудетозначать,чтоименноэлементыпапки
Входящие будутпредставлятьсобойактивныйПроводник.
Листинг18представляетмакросдляавтоматизациипроцесса
созданияКонтактовизвыбранныхвходящих.
Листинг 18. Создание Контактов из выбранных входящих
sub CreateCnt()
Dim aOl As Outlook.Application
Dim oNS As Outlook.NameSpace
Dim oFСnt As MAPIFolder 'объект - Contact Folder
Dim oFInb As MAPIFolder 'папка входящие
Dim cCnt As Outlook.Items ‘коллекция Контактов
Dim cM As Items ‘коллекция Сообщений
Dim iM As MailItem 'элемент Сообщение
Dim iCnt As Outlook.ContactItem 'элемент Контакт
Dim oE As Outlook.Explorer 'элемент Проводник
Dim oS As Outlook.Selection 'объект - выделенные элементы Outlook
Dim ГодПоступления As String
Dim Факультет As String

89
Dim Специальность As String
Dim ФормаОбучения As String
ГодПоступления = “2001”
Факультет = “эк” ‘экономический
Специальность = “ФК” ‘Финансы и Кредит
ФормаОбучения = «вч» 'вечерняя
Set aOl = New Outlook.Application
Set oNS = aOl.GetNamespace(«MAPI»)
Set oFСnt = aOl.GetNamespace(«MAPI»).Folders(«Личные папки»)
.Folders(«Контакты»)
Set oFInb = aOl.GetNamespace(«MAPI»).Folders(«Личные папки»)
.Folders(«Входящие»)
Set cCnt = oFСnt.Items
Set oE = aOl.ActiveExplorer 'объектной переменной присваивается
значение
‘активного проводника
Set oS = oE.Selection ‘объект - выделенные элементы
For Each iM In oS
Set iCnt = cCnt.Add '
Set iCnt = aol.CreateItem(olContactItem)
With iCnt
.JobTitle = “МИПП” & “, “ & ГодПоступления & “, “ & Факультет _
& «, « & Специальность & «, « & ФормаОбучения
.Email1Address = iM.SenderEmailAddress
.Body = iM.Body & iM.Subject
.Categories = «Студенты»
.Save
End With
iM.Delete
Next
End Sub
В создаваемом Контакте в поле Body перемещается ин-
формация из полей Subject и Body входящего Сообщения.

90
В последующем вручную придется «растащить» полученную
информацию, в частности, перетащить мышью полное имя.
ЕсливыимеетевозможностьсразуотредактироватьКонтакт,
выиспользуетеметодDisplay.Этотвариант,конечно,предпочтительнее.Еслижеуваснетвозможностизавершитьработу
посозданиюКонтактов,товы,используяметодSave,сохраняетеКонтакт,оставляяокончательноередактированиенабо-
леепозднеевремя.Есливыработаетесо стандартнойпапкой
Контакты,тоновый Контактвы можете создать используя
методCreateItem. Если же работаете с вложеннымипапками
илипользовательскимиформами,тодлясозданияновогоКон-
тактанеобходимоиспользоватьметодAddобъектаКоллекция
Контактов(cCnt). После создания Контактасоответствую-
щееемувходящееСообщениеудаляется.
Сделайтесебеобычнуювизитнуюкарточку.Еслинаобороте
выприведетепример,вкакойформевыхотелибыполучитьсообщениеотвашегопотенциальногоклиента,томногиеиззаинтересованныхвсотрудничествесвамисогласятсяоблегчитьвамвашу
информационнуюработу.
Заказ Тренингов
Интерфейс во многом определяет эффективность работы.
Естественно,чтодлярешенияразличныхзадачнеобходимыразличныеинтерфейсы.Естественнотакже,чтоинтерфейсы должны отвечать содержанию решаемых задач. Если вам необходимовнестиинформациюоКратком именичеловекаиегоАдресе
электронной почты,тоработатьсостандартной формой Outlook
Контактынеудобно,потомучтополятелефоновиполеКраткое
имянаходятсянаразныхвкладках,ивамвсякийразнеобходимо
будетосуществлятьпереходспомощьюмыши.Даибольшоеколичествополейстандартнойформынесодействуетэффективной
работе,потомучтовсякий разнеобходимоосуществлятьвыбор
избольшогоколичества.
Есливамопределеннонеобходимо3или4элементаинформации,тоследуетисоздаватьформу,котораябудетпозволятьопре-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
