ВБА макронаредба за слање е-порука из Екцела преко Оутлоока

Појавио се проблем са организовањем дистрибуције писама по списку корисника е-поште у Екцелу. Штавише, у сваком писму морате навести неке податке који су индивидуални за сваког корисника. Покушао сам имплементирати ову функцију користећи макро вба у Екцелу, који шаље пошту путем Оутлоок профила поште који је конфигуриран на рачунару. Испод је моја одлука.

Претпоставимо да имамо Екцел датотеку која садржи следеће ступце:

Кориснички именик | Пуно име | Последње време промене лозинке | Статус рачуна

Као део мог задатка, сваки корисник са листе мора послати писмо формулара:

Тема: Статус налога у домени винитпро.ру
Тело писмо: Поштовани% пуно име корисника%
Ваш налог у домени винитпро.ру је% статус%
Последње време промене лозинке:% пвдцханге%Савет. Ако за корисничке налоге морате да добијете вредност једног од корисничких атрибута у Ацтиве Дирецтори-у, можете да користите решење из чланка Екцел Фунцтион да бисте добили корисничке податке из АД-а.

Креирајте нову картицу макро: Виев -> Макрои. Унесите име макроа сенд_емаил и притисните дугме Креирајте:

У ВБА едитор који се отвори, залепите следећи код (пружио сам му све потребне коментаре). Да аутоматизујем слање писама, користићу функцију ЦреатеОбјецт ("Оутлоок.Апплицатион") која вам омогућава да креирате и користите Оутлоок објект апликације у скрипти.

Важно је. На рачунару који шаље писма мора бити инсталиран и конфигуриран Оутлоок профил е-поште. Из овог оквира (и адресе) ће бити послат.

Суб сенд_емаил ()
Дим олапп као објект
Дим олМаилИтм као објект
Дим иЦоунтер као цео број
Дим дест као варијанта
Дим СДест као низ
'' линија
стрСубј = "Статус налога у домени винитпро.ру"
На грешку ГоТо дбг
'креирајте нови објект типа Оутлоок
Постави олАпп = ЦреатеОбјецт ("Оутлоок.Апплицатион")
За иЦоунтер = 1 до ВорксхеетФунцтион.ЦоунтА (Ступци (1))
'креирајте нову ставку (слово) у програму Оутлоок
Постави олМаилИтм = олАпп.ЦреатеИтем (0)
стрБоди = ""
усеремаил = Ћелије (иЦоунтер, 1) .Валуе
ФуллУсернаме = ћелије (иЦоунтер, 2) .Валуе
Статус = ћелије (иЦоунтер, 4) .Валуе
пвдцханге = ћелије (иЦоунтер, 3) .Валуе
'' формирају тело писма
стрБоди = "Поштовани" & ФуллУсернаме & вбЦрЛф
стрБоди = стрБоди & "Ваш налог у домени винитпро.ру" & Статус & вбЦрЛф
стрБоди = стрБоди & "Последње време промене лозинке:" & пвдцханге & вбЦрЛф
олМаилИтм.То = усеремаил
олМаилИтм.Субјецт = стрСубј
олМаилИтм.БодиФормат = 1
'1 - текстуални формат писма, 2 - ХТМЛ формат
олМаилИтм.Боди = стрБоди
олМаилИтм.Сенд
'следећи ред може се користити за уклањање погрешака у тексту писма коментаришући претходни
'МсгБок стрБоди
Подесите олМаилИтм = Ништа
Следећи иЦоунтер
Подесите олАпп = Ништа
дбг:
'приказ грешке, ако постоји
Ако је Ерр.Десцриптион "" онда је МсгБок Ерр.Десцриптион
Крај суб

Ова Екцел датотека мора бити сачувана уз проширење клсм (Формат радне књиге у Екцелу са макро подршком). Да бисте покренули дистрибуцију, изаберите креирану процедуру (макро) и кликните на дугме Екецуте.

Макро ће узастопно сортирати све редове на Екцел радном листу, генерисати и послати једно писмо сваком Е-маилу са листе.