Как отправлять электронные письма из электронной таблицы Excel с использованием сценариев VBA
Как отправлять электронные письма из электронной таблицы Excel с использованием сценариев VBA
Отправка электронных писем из Microsoft Excel требует всего несколько простых скриптов. Добавьте эту функциональность в свои электронные таблицы, и вы действительно сможете расширить свои возможности в Excel.
Мы рассмотрели множество отличных макросов Excel, которые могут выполнять те же функции, что и сценарии VBA, но без необходимости знания программирования. Но есть много продвинутых вещей, которые вы можете делать только с VBA, например, создание отчета в виде электронной таблицы со всей информацией о вашем ПК.
Предпочитаете смотреть этот урок как видео? Мы вас покроем!
Exceltip
Excel позволяет создавать диаграммы высокого качества, работать с огромным количеством данных, обрабатывать картинки, блок-схемы и многое другое. И даже если вам и этого не достаточно, можно использовать Excel для автоматической отправки писем с помощью встроенного VBA редактора.
Данная статья описывает три способа отправки писем с помощью VBA в Excel. Вы можете скачать файл с примером отправки email с помощью VBA в Excel.
Отправить письмо в Excel с помощью VBA
Один из самых простых способов для автоматизации отправки почты с Excel заключается в вызове функции Create («ObjectOutlook.Application»). Данная функция возвращающает ссылку на ActiveX объект (в данном случает приложение Outlook), которое затем используется для создания и отправки электронной почты.
Чтобы проверить данный способ в работе, скопируйте и вставьте код ниже в VB редактор.
В качестве напоминания: Когда вы пытаетесь отправить письмо вышеуказанным способом, система безопасности будет выдавать каждый раз предупреждающее окно, в котором будет говориться о том, что Программа пытается отправить сообщение от вашего имени… и возможности обойти этот шаг нет.
К счастью, существует еще два способа, с помощью которых данный вопрос может быть решен: первый – через использование CDO, второй – имитирующий использование событий нажатий клавиш клавиатуры.
Отправить письмо в Excel с помощью CDO
Что такое CDO? CDO является библиотекой объектов, которая предоставляет интерфейс Messaging Application Programming Interface (MAPI). CDO позволяет манипулировать обменом данных, и отправлять и получать сообщения.
Использование CDO может быть предпочтительно в случаях, когда вы хотите предотвратить появление вплывающих окон безопасности Программа пытается отправить сообщение от вашего имени… и следовательно, предотвратить задержку отправки сообщения.
В нашем примере мы используем функцию CreateObject («CDO.Message»). Важно отметить, что необходимо правильно установить конфигурацию SMTP сервера, чтобы не допустить появления ошибок Run-time error 2147220973(80040213) или sendUsing configuration value is invalid. Пример ниже настроен на отправку сообщений через почту Google (Gmail). Для других почтовых серверов, вам потребуется ввести свои значения SMTP-сервера и SMTP-порта.
Обратите внимание, чтобы воспользоваться данным методом вам необходимо подключить библиотеку CDO в редакторе макросов Tool –> References.
Отправить письмо в Excel с помощью Send Keys
Другой способ отправки email с помощью Excel – использование команды ShellExecute, которая выполняет любую программу в VBA. Команда ShellExecute используется для загрузки документа с соответствующей программой. По сути, вы создаете объект String (текстовые данные) и передаете его в качестве параметра для функции ShellExecute. Остальная часть операций выполняется в окнах. Автоматически определяется, какая программа связана с данным типом документа и используется для загрузки документа. Вы можете использовать функцию ShellExecute, чтобы открыть Internet Explorer, Word, Paint и множество других приложений. В коде ниже используется задержка в три секунды, чтобы убедиться, что отправляемое письмо корректно и для возможности предотвратить отправку, если вы вдруг нашли какие-нибудь недочеты.
Отправка в тексте сообщения электронной почты
В приложениях Excel, Publisher и Word можно отправлять файлы непосредственно в тексте сообщения электронной почты (а не в виде вложения). Для этого необходимо добавить на панель быстрого доступа команду Отправить получателю. Сведения о добавлении команд на панель быстрого доступа см. в статье Настройка панели быстрого доступа.
Откройте файл, который вы хотите отправить.
На панели быстрого доступа нажмите кнопку Отправить получателю, чтобы открыть сообщение электронной почты. Файл будет помещен в текст сообщения.
Укажите псевдонимы получателей, введите тему и текст сообщения (если необходимо) и нажмите кнопку Отправить.
Процесс слияния данных и серийной печати рассылок из Excel
Когда уже создадите и заполните все таблицы необходимыми значениями, можно запустить свой макрос для серийной печати. Нажимаете комбинацию клавиш (ALT+F8) из списка в появившемся окне выбираем имя макроса «PechatSerii» и нажимаем на кнопку «Выполнить».
Циклы инструкций кода сразу проходят по всем строкам Таблицы Данных и поочередно вводят собранные значения из ячеек строк в соответственные ячейки Серийной Таблицы. После заполнения каждого комплекта данных выполняется печать готового текущего документа.
Данный процесс повторяется ровно столько раз сколько строк содержит Таблица Данных. После завершения действия макроса выводиться сообщение с информацией о завершении генерации документов и о их количестве отправленных на печать:
После завершения действия макроса Серийная Таблица будет содержать данные полученные из последней строки Таблицы Данных. Как показано ниже на рисунке:
Таким образом у нас получилось автоматизировать большой объем роботы с помощью макроса и без использования программы Word.
Примеры макросов в Excel. Диалоговое VBA сообщение msgBox
В прошлой статье мы вкратце познакомились с записью макроса при помощи рекордера Excel. Сейчас мы углубимся в эти дебри и напишем для примера пару простейших макросов. В одном из примеров по традиции продемонстрируем работу с диалоговым окном типа «Сообщение», в другом расширим наше диалоговое окно.
Пример 1. Простое диалоговое сообщение msgBox в VBA
Не будем отступать от традиций начала всех примеров программирования. Напишем макрос, который при запуске выдаст нам окно сообщения с надписью «Hello World». Заодно рассмотрим работу с пользовательскими диалогами.
Теперь писать макросы будем только в ручном режиме, никаких рекордеров!
Итак, для того чтоб создать макрос, Вам необходимо открыть окно всеми любимого редактора Visual Basic (VB). Для этого выполняем следующие действия: Сервис-Макрос-Редактор Visual Basic (Alt+F11).
Откроется окно редактора MS Visual Basic.
Если у Вас отсутствуют левые окна, то их необходимо включить. Для этого нажмите F4 – Открывает окно свойств Properties Window, и сочетание клавиш Ctrl+R – открывает окно Project Explorer. Без этих окон в дальнейшем затруднительно работать. Все! Сделали.
Что мы видим в окне Project? В данном окне отражается как раз таки структура нашей книги. Объекты книги – Лист1, 2, 3, Эта книга. Более подробно изучим данные объекты в последующих статьях, а пока возвращаюсь к примеру.
Что необходимо сделать для того чтоб начать писать код? Необходимо создать модуль. Примечание: Вообще, в дальнейшем рекомендую разделять код обработчиков на разные модули. Это облегчит понимание кода и создаст порядок в структуре.
Создаем модуль: Insert – Module
Перед нами открылось пустое окно модуля, напоминает блокнот. Такое окно мы уже видели, когда записывали первый макрос в прошлой статье. По правилам «хорошего тона» дадим имя нашему модулю, назовем его «MacroBook». Для этого перейдите в окно свойств и введите имя в поле (Name)
Переходим в окно редактирования кода и пишем следующее:
Готово! Открываем окно рабочей книги Excel, жмем Alt+F8 и видим наш макрос «Hello»
Остается только «Выполнить». В результате работы макроса мы получим сообщение следующего вида и содержания:
Пример 2. Расширенное диалоговое сообщение msgBox в VBA
Рассмотрим еще один вид диалоговых сообщений, которые содержат дополнительные кнопки «Да», «Нет», «Отмена»
Переходим к коду нашего макроса «Hello» и дописываем к команде msgbox следующее:
MsgBox «Hello, World!», vbYesNoCancel, «Мой макрос»
Обратите внимание, когда вы поставите запятую после «Hello, World!», у Вас должен появиться список всех доступных типов диалоговых окон
Поэкспериментируйте с каждым для понимания.
Как Вы заметили, я добавил еще один параметр к команде msgBox – “Мой макрос”. Это подпись нашего окна. Этот параметр не обязателен, но я рекомендую все диалоги подписывать наименованием своей разработки или иной информацией.
Запустим наш макрос
Теперь у нас открылась совсем иная форма сообщения.
На этом пока все. Следите за выходом статей и уроков. Если возникли вопросы, с удовольствием отвечу, а если будет необходимо, напишу статью с пояснением.