Найти тему
Роман Алексеевич

Автоматическая отправка писем из Excel через Outlook используя VBA

Иногда, в процессе трудовой деятельности, приходится периодически отправлять различного рода сообщения однотипного характера по списку рассылки. Например, напоминание о предоставлении показаний приборов от разных абонентов, необходимо запрашивать каждое 25-тое число месяца. Это очень муторно и требует от вас отвлечь свое внимание на эту задачу дабы создать сообщение, вспомнить адреса электронной почты абонентов, набрать текст сообщения, темы и нажать кнопку «отправить». В принципе это занимает не так уж много времени. Но зачем отвлекаться на то, что можно сделать автоматически использую автоматическую рассылку писем из Excel через Outlook?

В статье «Отправить почту через Excel с помощью макроса» мы разработали функцию, которая создает новое сообщение Outlook из экселя:

Для автоматической рассылки писем из excel через outlook необходимо данную функцию немного доработать, удалив из Оператора With строку .Display дабы окно созданного сообщение не отображалось и соответственно лишний раз нас не отвлекало от важных дел, а также в конце Оператора With добавить строку .Send. Соответственно получается функция следующего содержания:

-2

Теперь необходимо объявить глобальную переменную Vremya для запуска и остановки таймера выполнения макроса рассылке писем из excel через outlook.

-3

Создаем сам макрос рассылки писем:

-4

Переменная Vremya может иметь любое значение вида «15.05.2020 13:23:14», но мы же используем значение текущего времени (получая его вызвав встроенную в vba функцию Now) и прибавляем к нему одну минуту используя TimeSirial, синтаксис которого приведен ниже:

-5

На итог переменная Vremya у нас равна текущей дате и времени плюс одна минута.

Дальше используя таймер Application.OnTime ЧЕРЕЗ_СКОЛЬКО_ЗАПУСТИТЬ_МАКРОС, ФУНКЦИЯ запускаем выполнение функции newMessage(). Здесь вводится дополнительная функция newMessage() ввиду невозможности передачи атрибутов используя OnTime.

Сама же функция newMessage() представляет из себя следующее:

-6

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

В итоге у нас получилось реализовать в vba автоматическую рассылку писем из excel через outlook, которая избавит нас от необходимости отправки однотипно-повторяющихся сообщений. А изменив переменную Vremya под себя, вы сможете делать рассылку в нужное вам время.

Оригинальную статью, макрос или код vba в формате разработке доступен тут.