VBA макрос за изпращане на имейли от Excel през Outlook

Проблемът възникна при организирането на разпространението на писма според списъка на потребителите на имейли в Excel. Освен това във всяко писмо трябва да посочите някои данни, които са индивидуални за всеки потребител. Опитах се да реализирам тази функционалност, използвайки макроса vba в Excel, който изпраща поща чрез конфигурирания на компютъра пощенски профил на Outlook. По-долу е моето решение.

Да предположим, че имаме файл в Excel, съдържащ следните колони:

Потребителски имейл | Пълно име | Последно време за промяна на паролата | Състояние на акаунта

Като част от моята задача всеки потребител от списъка трябва да изпрати писмо от формуляра:

тема: Състояние на акаунт в домейна winitpro.ru
Писмо на тялото: Уважаеми% Пълно потребителско име%
Вашият акаунт в домейна winitpro.ru е% status%
Последно време за промяна на паролата:% pwdchange%съвет. Ако за потребителските акаунти трябва да получите стойността на един от потребителските атрибути в Active Directory, можете да използвате решението от статията Excel Function, за да получите потребителски данни от AD.

Създайте нов раздел: изглед -> макроси. Въведете име на макрос send_email и натиснете бутона създавам:

В редактора на VBA, който се отваря, поставете следния код (предоставих му всички необходими коментари). За да автоматизирам изпращането на писма, ще използвам функцията CreateObject ("Outlook.Application"), която ви позволява да създавате и използвате обект на приложение Outlook в скрипт.

Важно е. На компютъра, изпращащ писмата, трябва да се инсталира и конфигурира пощенски профил в Outlook. От това поле (и адрес) ще бъде изпратено.

Sub send_email ()
Dim olapp като обект
Dim olMailItm като обект
Dim iCounter като цяло число
Dim dest като вариант
Dim SDest като струнен
'' тема
strSubj = "Състояние на акаунта в домейна winitpro.ru"
При грешка GoTo dbg
'създайте нов обект от тип Outlook
Задайте olApp = CreateObject ("Outlook.Application")
За iCounter = 1 до WorkFolction.CountA (Колони (1))
„създайте нов елемент (буква) в Outlook
Задайте olMailItm = olApp.CreateItem (0)
strBody = ""
useremail = Клетки (iCounter, 1) .Value
FullUsername = Клетки (iCounter, 2) .Value
Състояние = клетки (iCounter, 4) .Value
pwdchange = Клетки (iCounter, 3) .Value
'' образуват тялото на писмото
strBody = "Скъпи" & Пълно потребителско име & vbCrLf
strBody = strBody & „Вашият акаунт в домейна winitpro.ru“ & Status & vbCrLf
strBody = strBody & "Време за последна промяна на паролата:" & pwdchange & vbCrLf
olMailItm.To = useremail
olMailItm.Subject = strSubj
olMailItm.BodyFormat = 1
'1 - текстов формат на писмото, 2 - HTML формат
olMailItm.Body = strBody
olMailItm.Send
„следващият ред може да се използва за отстраняване на грешки в текста на писмото, като се коментира предишният
'MsgBox strBody
Задайте olMailItm = Нищо
Следващ iCounter
Задайте olApp = Нищо
DBG:
„грешка на дисплея, ако има такава
Ако Err.Description "" Тогава MsgBox Err.Description
Край подс

Този Excel файл трябва да бъде запазен с разширението xlsm (Формат на работната книга на Excel с поддръжка на макрос). За да стартирате разпределението, изберете създадената процедура (макрос) и щракнете върху бутона за изпълнение.

Макросът последователно ще сортира всички редове в работния лист на Excel, ще генерира и изпраща по едно писмо до всеки имейл от списъка.