Отправить электронную почту через excel используя макрос

Каждый в процессе своей трудовой деятельности рано или поздно сталкивается с необходимостью отправлять однотипные сообщения определенному кругу лиц. Например, в процессе моей трудовой деятельности передо мной стояла задача отправлять, так сказать, письма-напоминалки единственной целью которых было напомнить определенному кругу лиц, что настало время передавать мне показания по приборам учета. И звучало оно примерно так: «Добрый день Наталья Ивановна! Прошу предоставить показания газа за апрель 2020 года». Само сообщение так сказать не трудно было составить, трудно было вспомнить, что именно в этот день нужно было отправить сообщение (эту проблему мы уже решили в статье «как организовать работу чтобы все успевать»), а также на какой адрес электронной почты отправлять. Я тратил уйму времени, чтобы найти необходимую информацию. Это повторялось из месяца в месяц и в итоге мне в голову пришла мысль: «А почему бы мне не сделать так, чтобы по нажатию кнопки «отправить сообщение» у меня автоматически создавалось новое сообщение с уже набранным обращением в Outlook и указывались контакты, которым данное сообщение адресовано».

На итог после реализации данной задачи я автоматизировал однообразную работу и у меня пропала необходимость тратить уйму времени на рутинное занятие, более того, что важно, я перестал беспокоиться и нервничать по поводу того, где найти мне необходимую информацию, чтобы выполнить задачу «отправить электронную почту».

Теперь давайте подробно разберем, как отправить электронную почту через excel. Для решения данной задачи я использовал встроенный в Microsoft Office язык программирования Visual Basic for Applicatin, сокращенно vba. Для тех, кто понятия не имеет о том, что это такое, а также всех, кто испытывает страх перед словом «язык программирования» - прошу ознакомиться со статьей «Самоучитель по макросам в Excel. Азы VBA», поверьте, в нем нет ничего сложного.

В первую очередь отправка почты через vba excel должна быть универсальной. Ведь не хочется писать кучу строк кода каждый раз, когда понадобиться отправить сообщение другому человеку с другим содержанием. Для этого создадим функцию CreateNewMail с тремя текстовыми параметрами типа String, а именно email (адрес электронной почты), tema (тема сообщения) и put_file (путь к файлу, который необходимо прикрепить к сообщению). Получится картина следующего вида:

Function CreateNewMail(email As String, tema As String, text As String, Optional put_file As String)
End Function

Далее в тело самой функции поместим код создания нового объекта Outlook, присвоив его переменной Mail.

'' Создать объект Outlook
Set Mail = CreateObject("outlook.application")

После создадим новое сообщение, указав электронную почту, тему, текст сообщения и прикрепив файл. При этом сделаем проверку на необходимость прикрепления файла.

'' Создать новое сообщение
With Mail.CreateItem(olMailItem)
.To = email'' адрес электронной почты
.body = text'' текст сообщения
.Subject = tema '' тема сообщения
.Display '' показать окно сообщения перед отправкой
'' прикрепить файл (при необходимости)
If Len(put_file) <> 0 Then .Attachments.Add put_file
End With

В итоге получилась функция следующего вида:

Function CreateNewMail(email As String, tema As String, text As String, Optional put_file As String)
'' Создать объект Outlook
Set Mail = CreateObject("outlook.application")
'' Создать новое сообщение
With Mail.CreateItem(olMailItem)
.To = email'' адрес электронной почты
.body = text'' текст сообщения
.Subject = tema '' тема сообщения
.Display '' показать окно сообщения перед отправкой
'' прикрепить файл (при необходимости)
If Len(put_file) <> 0 Then .Attachments.Add put_file
End With
End Function

На итог, чтобы необходимое сообщение создалось, достаточно в любом месте вызвать функцию с указанием параметров. Например:

CreateNewMail("LikovaTP@ugaz.com", "Прошу предоставить показания газа за апрель 2020 года", "Добрый день Татьяна Петровна!" & vbCr & vbCr & "Прошу предоставить показания газа за апрель 2020 года" & vbCr & vbCr & "Филиал АО 'Газгазоил'" & vbCr & "Инженер по учету" & vbCr & "Иванов Иван Иванович" & vbCr & "моб. тел. 8-927-000-00-00")

В результате получим сообщение следующего вида. И единственное что остается сделать – это нажать кнопку «Отправить».

отправка почты макросом excel
Сообщение, созданное макросом excel

И, как всегда, макрос отправки сообщения по Outlook из Excel можно скачать тут или же составить самостоятельно по вышеприведенному примеру. Также, немного доработав код vba, можно реализовать макрос автоматической отправки сообщений.

Поделись с друзьями:
Комментарии 2

Роман Романов
15 сентября 2020 в 09:22
Богдар Ростов, данный макрос подходится для любой версии эксель, а на практике просто не заменим.
Богдан Ростов
12 сентября 2020 в 17:23
Интересно, насколько полезным такой макрос будет на практике? Вроде бы создается достаточно просто, если четко следовать инструкции. Подходит для любой версии Excel? Спасибо. :)
© планеро.ru