Рассылка email через excel

Бывает нужно разослать большое количество писем списку контактов из таблицы в Excel.

Это может быть список потенциальных клиентов с мероприятия, выгрузка контактов из программы (1С, Битрикс24, amoCRM), просто список родственников, которые с нетерпением ждут от вас поздравления с праздником или уникального предложения.

Расскажу, как сделать это просто, быстро и бесплатно. Для решения задачи понадобится Excel, Word и Outlook из пакета Microsoft Office.

Итак, например, есть Excel таблица с данными клиентов (ФИО, компания, E-mail) и мы хотим отправить им персонализированное сообщение о предстоящих скидках.

Таблица Excel
Таблица Excel со списком клиентов

Колонка “Пол” потребуется для определения окончания “уважаемый” или “уважаемая”, ее я вычислил по формуле, если “Отчество” заканчивается на “ч” значит это мужчина, если нет — женщина:

=ЕСЛИ(ПРАВСИМВ(C2;1) = "ч"; "М";"Ж")

В новом документе Word наберём шаблон текста сообщения, которое будем отправлять. Вместо обращения, имени и названия компании оставим пока пустые места.

Запустим Мастер Слияния: вкладка Рассылки (Mailings), Начать слияние (Start Mail Merge), далее Пошаговый мастер слияния (Step-by-Step Merge Wizard).

Пошаговый мастер слияния
Запуск пошагового мастера слияния

Откроется мастер, состоящий из 6 этапов.

На перовом этапе выберем пункт Электронное сообщение (E-mail), так как хотим отправить наши сообщения по электронной почте.

Выбор типа документа
Выбор типа документа

На втором этапе нужно указать, какой документ будет использоваться в качестве шаблона, выберем Текущий документ (Current document).

Выбор документа
Выбор документа

Третий этап — выбор получателей. Так как список наших клиентов хранится в файле Excel, выбираем пункт Использование списка, жмем Обзор (Browse) и указываем наш файл.

Выбор получателей
Выбор получателей

Откроется окно Получатели слияния, в нем можно выбрать или отменить клиентов для которых делаем рассылку.

Получатели слияния
Выбор получателей рассылки

Четвертый этап — создание сообщения. Тут можно вставить данные из нашего файла Excel в шаблон сообщения, который мы подготовили.

Создание сообщения
Создание сообщения

Вставим Фамилию, Имя, Отчество и название компании в наш шаблон, для этого: установим курсор в текст сообщения куда хотим вставить значение поля Excel, нажмем Другие элементы, в открывшемся окне выберем поле, которое хотим вставить, и так для всех полей.

Вставка поля слияния
Вставка поля

Чтобы правильно указать обращение “уважаемый” для мужчин, и “уважаемая” для женщин создадим правило. Жмём кнопку Правила (Rules) на вкладке Рассылки (Mailings) и выберем пункт IF…THEN…ELSE.

Создание правила
Создание правила

В открывшемся окне укажем правило: если поле “Пол” равно “М” — вставить текст “уважаемый”, в противном случае — вставить текст “уважаемая”.

Настройка правила
Настройка правила

В итоге, после вставки полей должен получиться шаблон похожий на мой (вставленные поля выделил красным цветом).

Готовый шаблон слияния
Готовый шаблон слияния

На пятом этапе можно предварительно просмотреть результаты слияния. Для перехода между письмами служат кнопки со стрелками.

Просмотр сообщений
Предварительный просмотр сообщений

На завершающем 6 этапе нужно выбрать единственный пункт Электронная почта.

Завершение слияния
Завершение слияния

Затем в открывшемся окне указать тему отправляемых писем и выбрать в поле Кому столбец нашей таблицы Excel, в котором содержаться адреса получателей

Запуск рассылки
Запуск рассылки

После нажатия на кнопку ОК, Word автоматически подключится к вашему почтовому клиенту Outlook, поместит все сообщения в папку «Исходящие», после чего письма отправятся получателям.

Если вы хотите проверить письма перед отправкой, есть небольшая хитрость, нужно предварительно перевести Outlook в автономный режим Файл — Автономный режим. Письма останутся в исходящих, пока вы не выйдете из автономного режима и при необходимости вы сможете проверить или внести в них изменения.

На этом всё. Но вы можете поддержать проект. Даже небольшая сумма поможет нам писать больше полезных статей.

Если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.

В этой инструкции описаны настройки рассылки писем, общие для всех способов отправки (Outlook, TheBAT!, сервис рассылки).

К общим настройкам рассылки относится:

  • настройка темы письма и текста письма
  • настройка прикрепляемых файлов (вложений к письму)
  • настройка получателей письма (основной получатель, копия, скрытая копия)

Для начала, открываем в Excel таблицу с исходными данными для рассылки.
В таблице может быть сколько угодно столбцов, но обязательно должен присутствовать столбец с адресами электронной почты
(если у вас нет такой таблицы, можете протестировать программу на примере этого файла Excel, скриншот которого приведён ниже)

исходная таблица Excel с адресами почты для рассылки писем

Теперь открываем настройки программы, нажав кнопку Настройки на панели инструментов, и начинаем настраивать рассылку.

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

включение опции рассылки почты в программе заполнения документов

2. Пролистываем форму настроек немного вниз, и задаём тему, текст и адрес email получателя писем: 

рассылка почты - настройки темы и текста писем

Как видно на скриншоте, вы можете использовать поля из исходной таблицы как в качестве адреса получателя, так и в теме и тексте письма.

В поле «Получатель» необходимо сформировать корректный адрес электронной почты, на который будет отправлено письмо.

Адрес получателя можно ввести в полном и кратком формате:

  • {email адресата} — обычный адрес электронной почты (краткий формат)
    После подстановки значений из таблицы Excel, адрес будет иметь вид vasya@mail.ru
  • {Имя адресата} <{email адресата}> — полный формат адреса электронной почты (Имя Получателя <email>)
    После подстановки значений из таблицы Excel, адрес будет иметь вид  Василий Пупкин <vasya@mail.ru>

Вы можете использовать любой из этих 2 вариантов. Обычно используется второй вариант, т.к. люди лучше реагируют на письма, когда они адресованы лично им (а не просто на их адрес email)

Текст и тема письма могут быть произвольными.

В них тоже можно использовать коды полей (заголовки столбцов в фигурных скобках), а также любые другие поддерживаемые программой поля (например, код {%longdate%}  для вставки текущей даты)

Вложения (прикрепление файлов к письму)

Если необходимо прикреплять файлы к создаваемым письмам, пролистываем настройки еще немного вниз, и видим галочки для включения 2 режимов добавления вложений:

рассылка писем - добавление вложений в рассылаемые электронные письма

Первая опция — «Прикреплять к письму сформированные файлы» — позволяет нам присоединять документы, заполненные (созданные) нашей программой.

К примеру, если в папке «Шаблоны» у нас находится несколько файлов — образцов документов, а прикрепить к письму необходимо только один файл, — то можно воспользоваться текстовым полем для указания маски файла.

(если в папке «Шаблоны» находятся файлы с именами Анкета.doc, Купон участника.doc и Расчёт скидки.xls, то при маске *купон* к письмам будут прикреплены только файлы, созданные на базе шаблона Купон участника.doc)

Вторая опция — «Прикреплять к письму все файлы из заданной папки» — даёт нам возможность добавлять во вложение к письму неизменяемые («статические») файлы.

Количество «статических» файлов неограничено — сколько их будет в папке, столько и будет прикреплено к каждому письму.

Внимание: Если вы случайно укажете в качестве этой папки каталог с огромным количеством файлов, то почтовая программа может зависнуть (при попытке прикрепить сотни мегабайтов во вложение к письму)

PS: В поиске файлов, просматривается только верхний уровень заданной папки, — файлы из подпапок не прикрепляются к письмам)

Когда мы всё настроили (и не забыли нажать кнопку «Сохранить изменения»), можно запускать формирование документов.

Результат создания писем — на скриншоте:

автоматизированная рассылка почты - созданные письма в программе TheBAT

Почтовая рассылка

Постановка задачи

Имеем таблицу в Microsoft Excel, в которой хранится информация о ключевых клиентах нашей компании (адреса эл.почты, имена, названия компаний и т.д.), которых мы хотим поздравить с очередным праздником.

Поздравлять будем при помощи простого, но трогательного сообщения, содержащего имя клиента и название его компании. Причем все надо сделать так, чтобы получатель (не дай бог!) не подумал, что письмо сделано автоматически, а был уверен, что письмо было кропотливо написано ради него вручную.

В конце все созданные сообщения надо:

  • либо отправить через Outlook каждому клиенту на его e-mail
  • либо распечатать для последующей отправки обычной почтой
  • либо закинуть в новый файл, где каждое письмо будет отдельным листом (разделом)

В терминах Microsoft Office такая процедура называется Слиянием (Mail Merge). Поехали…

Подготовка списка клиентов в Excel

mailmerge1.gif

Таблица со списком клиентов для рассылки должна удовлетворять нескольким простым условиям:

  • Шапка таблицы должна быть простой — одна строка с уникальными названиями столбцов (без повторений и пустых ячеек).
  • В таблице не должно быть объединенных ячеек.
  • В таблице не должно быть пустых строк или столбцов (отдельные пустые ячейки допускаются).

Если планируется отправка по электронной почте, то, само-собой, в таблице должен быть столбец с адресами получателей.

Поскольку Excel и Word не смогу сами определить пол клиента по имени, то имеет смысл сделать отдельный столбец с обращением (господин, госпожа и т.п.) или с родовым окончанием (-ый или -ая) для обращения «Уважаемый(ая)…» Как вариант, возможно полуавтоматическое определение пола в зависимости от окончания отчества («а» или «ч»), реализованное функцией ПРАВСИМВ (RIGHT).

В новых версиях Microsoft Excel 2007/2010 для таких таблиц очень удобно использовать инструмент Форматировать как таблицу (Format as Table) с вкладки Главная (Home). Подробнее про такие «умные таблицы» можно почитать тут.

Создаем сообщение в Word и подключаем Excel

Открываем новый пустой документ в Microsoft Word и набираем туда текст нашего сообщения, оставляя в нем пустые места для будущей вставки имени клиента и его компании.  

Потом запускаем пошаговый Мастер Слияния  на вкладке Рассылки (Mailings) кнопкой Начать слияние (Start Mail Merge) – Пошаговый мастер слияния (Step-by-Step Merge Wizard):

mailmerge3.gif

В Word 2003 и старше эта команда была доступна в меню Сервис — Письма и рассылки — Мастер слияния (Tools — Letters and Mailings — Mail Merge).

Далее следует процесс из 6 этапов (переключение между ними — с помощью кнопок Вперед (Next) и Назад (Back) в правом нижнем углу в области задач).

Этап 1. Выбор типа документа.

На этом шаге пользователь должен выбрать тип тех документов, которые он хочет получить на выходе после слияния. Наш вариант — Письма (Letters), если мы хотим на выходе отправить созданные письма на принтер или Электронное сообщение (E-mail), если хотим разослать их по почте.

mailmerge4.gif

Этап 2. Выбор документа

На этом шаге необходимо определить, какой документ будет являться основой (заготовкой) для всех будущих однотипных сообщений. Мы выбираем — Текущий документ (Current document).

mailmerge5.gif

Этап 3. Выбор получателей

На этом шаге мы подключаем список клиентов в Excel к документу Word. Выбираем Использование списка и жмем на Обзор (Browse), после чего в диалоговом окне открытия файла указываем где лежит наш файл со списком клиентов.

mailmerge6.gif

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

mailmerge7.gif

Этап 4. Создание письма

На этом этапе пользователь должен указать – куда именно в документ должны попасть данные из подключенного списка. Для этого необходимо установить курсор в точку вставки в письме и использовать ссылку Другие элементы — она выводит полный набор всех полей списка, из которого мы и выбираем нужное поле для вставки:

mailmerge10.gif

В итоге, после вставки всех полей слияния у нас должно получиться нечто похожее (вставленные поля выделены красным):

mailmerge12.gif

Если в исходной таблице не было специального столбца для окончания «ый»/»ая» к слову «уважаем» (как в нашем примере), но был обычный столбец «Пол» с классическими «муж» и «жен», то можно воспользоваться кнопкой Правила (Rules) на вкладке Рассылки (Mailings):

mail-merge-rules.png

Эта кнопка открывает список правил (функций и полей), доступных для вставки в документ при создании рассылки. Для подстановки нужного окончания к слову «уважаемый/ая» выберем третий пункт IF…THEN…ELSE. В открывшемся затем окне зададим правило подстановки правильного окончания в зависимости от пола:

mail-merge-if.png

Этап 5. Просмотр писем

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

mailmerge2.gif

Этап 6. Завершение слияния

На завершающем этапе возможны несколько вариантов:

mailmerge9.gif

Нажатие ссылки Печать (Print) приведет к немедленной отправке всех результатов слияния на принтер без вывода на экран.

Если необходимо сохранить созданные в результате слияния документы для дальнейшего использования или требуется внести ручную правку в некоторые из документов, то лучше использовать ссылку Изменить часть писем (Edit individual letters), которая выведет результаты слияния в отдельный файл:

mailmerge13.gif

Если вы на Шаге 1 выбирали опцию Электронные сообщения (E-mail), то на Шаге 6 вам предложат ввести тему для отправляемых сообщений и выбрать столбец таблицы, содержащий адреса электронной почты для рассылки. Затем все созданные сообщения будут помещены в папку Исходящие (Outbox) вашего почтового клиента Outlook.

Для проверки правильности созданных сообщений можно заранее временно отключить Outlook от сервера, чтобы письма сразу не ушли и вы могли их посмотреть и убедиться, что с ними все в порядке. Для этого в меню Microsoft Outlook можно выбрать команду Файл — Автономный режим или даже временно отключить сетевое подключение к вашему компьютеру. Письма временно «застрянут» в папке Исходящие (Outbox) и вы сможете их открыть и проверить перед отправкой.

Ссылки по теме

  • Отправка книги или листа Excel по электронной почте
  • Создание электронных писем с помощью функции ГИПЕРССЫЛКА (HYPERLINK)
  • Инструмент для массовой рассылки сообщений (в т.ч. с вложениями) по списку из надстройки PLEX

Содержание

    • 0.1 Постановка задачи
    • 0.2 Подготовка списка клиентов в Excel
    • 0.3 Создаем сообщение в Word и подключаем Excel
    • 0.4 Ссылки по теме
  • 1 Применение инструмента
  • 2 Что необходимо
  • 3 Добавить «Email рассылки» в Excel 2016, 2013, 2010, 2007
  • 4 Как работать с надстройкой:

Постановка задачи

Имеем таблицу в Microsoft Excel, в которой хранится информация о ключевых клиентах нашей компании (адреса эл.почты, имена, названия компаний и т.д.), которых мы хотим поздравить с очередным праздником.

Поздравлять будем при помощи простого, но трогательного сообщения, содержащего имя клиента и название его компании. Причем все надо сделать так, чтобы получатель (не дай бог!) не подумал, что письмо сделано автоматически, а был уверен, что письмо было кропотливо написано ради него вручную.

В конце все созданные сообщения надо:

  • либо отправить через Outlook каждому клиенту на его e-mail
  • либо для последующей отправки обычной почтой
  • либо закинуть в новый файл, где каждое письмо будет отдельным листом (разделом)

В терминах Microsoft Office такая процедура называется Слиянием (Mail Merge). Поехали…

Подготовка списка клиентов в Excel

Таблица со списком клиентов для рассылки должна удовлетворять нескольким простым условиям:

  • Шапка таблицы должна быть простой — одна строка с уникальными названиями столбцов (без повторений и пустых ячеек).
  • В таблице не должно быть объединенных ячеек.
  • В таблице не должно быть пустых строк или столбцов (отдельные пустые ячейки допускаются).

Если планируется отправка по электронной почте, то, само-собой, в таблице должен быть столбец с адресами получателей.

Поскольку Excel и Word не смогу сами определить пол клиента по имени, то имеет смысл сделать отдельный столбец с обращением (господин, госпожа и т.п.) или с родовым окончанием (-ый или -ая) для обращения «Уважаемый(ая)…» Как вариант, возможно полуавтоматическое определение пола в зависимости от окончания отчества («а» или «ч»), реализованное функцией ПРАВСИМВ (RIGHT).

В новых версиях Microsoft Excel 2007/2010 для таких таблиц очень удобно использовать инструмент Форматировать как таблицу (Format as Table) с вкладки Главная (Home). Подробнее про такие «умные таблицы» можно почитать тут.

Создаем сообщение в Word и подключаем Excel

Открываем новый пустой документ в Microsoft Word и набираем туда текст нашего сообщения, оставляя в нем пустые места для будущей вставки имени клиента и его компании.  

Потом запускаем пошаговый Мастер Слияния  на вкладке Рассылки (Mailings) кнопкой Начать слияние (Start Mail Merge) – Пошаговый мастер слияния (Step-by-Step Merge Wizard):

В Word 2003 и старше эта команда была доступна в меню Сервис — Письма и рассылки — Мастер слияния (Tools — Letters and Mailings — Mail Merge).

Далее следует процесс из 6 этапов (переключение между ними — с помощью кнопок Вперед (Next) и Назад (Back) в правом нижнем углу в области задач).

Этап 1. Выбор типа документа.

На этом шаге пользователь должен выбрать тип тех документов, которые он хочет получить на выходе после слияния. Наш вариант — Письма (Letters), если мы хотим на выходе отправить созданные письма на принтер или Электронное сообщение (E-mail), если хотим разослать их по почте.

Этап 2. Выбор документа

На этом шаге необходимо определить, какой документ будет являться основой (заготовкой) для всех будущих однотипных сообщений. Мы выбираем — Текущий документ (Current document).

Этап 3. Выбор получателей

На этом шаге мы подключаем список клиентов в Excel к документу Word. Выбираем Использование списка и жмем на Обзор (Browse), после чего в диалоговом окне открытия файла указываем где лежит наш файл со списком клиентов.

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

Этап 4. Создание письма

На этом этапе пользователь должен указать – куда именно в документ должны попасть данные из подключенного списка. Для этого необходимо установить курсор в точку вставки в письме и использовать ссылку Другие элементы — она выводит полный набор всех полей списка, из которого мы и выбираем нужное поле для вставки:

В итоге, после вставки всех полей слияния у нас должно получиться нечто похожее (вставленные поля выделены красным):

Если в исходной таблице не было специального столбца для окончания «ый»/»ая» к слову «уважаем» (как в нашем примере), но был обычный столбец «Пол» с классическими «муж» и «жен», то можно воспользоваться кнопкой Правила (Rules) на вкладке Рассылки (Mailings):

как сделать список рассылки в excel

Эта кнопка открывает список правил (функций и полей), доступных для вставки в документ при создании рассылки. Для подстановки нужного окончания к слову «уважаемый/ая» выберем третий пункт IF…THEN…ELSE. В открывшемся затем окне зададим правило подстановки правильного окончания в зависимости от пола:

как сделать список рассылки в excel

Этап 5. Просмотр писем

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

Этап 6. Завершение слияния

На завершающем этапе возможны несколько вариантов:

Нажатие ссылки Печать (Print) приведет к немедленной отправке всех результатов слияния на принтер без вывода на экран.

Если необходимо сохранить созданные в результате слияния документы для дальнейшего использования или требуется внести ручную правку в некоторые из документов, то лучше использовать ссылку Изменить часть писем (Edit individual letters), которая выведет результаты слияния в отдельный файл:

Если вы на Шаге 1 выбирали опцию Электронные сообщения (E-mail), то на Шаге 6 вам предложат ввести тему для отправляемых сообщений и выбрать столбец таблицы, содержащий адреса электронной почты для рассылки. Затем все созданные сообщения будут помещены в папку Исходящие (Outbox) вашего почтового клиента Outlook.

Для проверки правильности созданных сообщений можно заранее временно отключить Outlook от сервера, чтобы письма сразу не ушли и вы могли их посмотреть и убедиться, что с ними все в порядке. Для этого в меню Microsoft Outlook можно выбрать команду Файл — Автономный режим или даже временно отключить сетевое подключение к вашему компьютеру. Письма временно «застрянут» в папке Исходящие (Outbox) и вы сможете их открыть и проверить перед отправкой.

Ссылки по теме

  • Отправка книги или листа Excel по электронной почте
  • Создание электронных писем с помощью функции ГИПЕРССЫЛКА (HYPERLINK)
  • Инструмент для массовой рассылки сообщений (в т.ч. с вложениями) по списку из надстройки PLEX

Привет! Сегодня решил осветить один из тех инструментов, а именно массовую рассылку (слияние) документов. Этот инструмент относится к тем, что:

  • легки в использовании
  • малоизвестны
  • приносят охрененную пользу

и еще один нюанс — это единственный из всех инструментов, который использует связь с Word. Даже более того, этот инструмент больше относится к Word, чем к Excel.

Итак, начинаем.

Применение инструмента

Представим ситуацию. Вы начальник отдела кадров, в котором утвержденный проект трудового договора. Каждый сотрудник, включая гендира, подписывает ежегодно один и тот же документ, который каждый раз отличается только в деталях, индивидуально присущих каждому человеку — ФИО, должность, зарплата, домашний адрес и т.д.

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

Как обычно делается? Либо вы вносите каждый раз перед распечаткой в установленный шаблон нужные изменения либо создаете на каждого сотрудника (адресата) отдельный документ, в котором только корректируете дату подписания.

В любом случае вы работаете с каждым адресатом. Это отнимает много времени и является рутинной процедурой, которую легко можно сократить.

Что необходимо

В первую очередь нам нужны:

  • Документ-шаблон в Word’е
  • Список адресатов с их характеристиками (адресами, полом, обращением…)

У меня для примера простенькое письмецо:

Серым отмечены блоки, индивидуальные для каждого адресата. Как видите, нужно подготовить обращение (Уважаемый/Уважаемая), нужные поля в родительном падеже (Иванову). Соответственно, на каждый такой блок я готовлю табличку в Excel:

Делаем слияние

Слияние — вот  как называется этот инструмент. Для этого открываем наш шаблон в Word и нажимаем на вкладке «Рассылки» — «Начать слияние» — «Пошаговый мастер слияния».

Далее появится справа панель, где поэтапно надо выбирать нужный вариант.

  1. Выбор типа документа. Я выбрал «Письма»
  2. Открытие документа. Я уже открыл, поэтому «Текущий документ».
  3. Выбор получателей. У меня уже готовый список, поэтому «Использование списка» и Обзор. Там выбираю свой файл.
  4. Создание письма. Мне много блоков надо ввести, поэтому поочередно выбираю нужное место в письме и через «Другие элементы» вставляю нужный мне элемент.
  5. Просмотр писем. Здесь можно прокрутить ваши записи, т.е. посмотреть все документы, нажимая на соответствующие стрелочки.
  6. Завершение слияния. Тут есть два варианта — «Печать» — можете готовые документы, при этом выбрав только тех, кто нужен. И другой вариант «Изменить часть писем» — здесь каждый документ формируется друг за другом. Это нужно для того, чтобы внести какие-то редкие изменения, которые просто нецелесообразно втыкать в таблицу. При этом также можно выбрать какие письма вам выгрузятся в Word, а какие не нужны.

Сохраните документ. Потом при открытии вас будут спрашивать

Отвечаете «Да» и можете просматривать шаблон с текущими адресами прямо на панели, слияние делать больше не придется.

Очевидный плюс этого инструмента — никакой рутины. Подготовка документа будет сводиться лишь к открытию, выбору адресатов и распечатке (отправке).

Обычно я делаю быструю пояснялку для Youtube, но этот инструмент уже освещен в моем бесплатном часовом видеокурсе «. Все мои подписчики его получили, если же его у вас нет, можете его получить, введя в поле в правой части свои контакты и после подтверждающего письма (где надо кликнуть на ссылке) вам придет письмо со ссылкой на видеокурс. Там вы заодно познакомитесь еще с 9ю инструментами, которые приносят огромную пользу в работе всем пользователям Excel.

«Глаза боятся, а руки делают»

P.S. Понравилась статья? Подпишитесь на рассылку в правой части страницы (Бесплатный курс «Топ-10 инструментов Excel») и будьте в курсе новых событий.

Сегодня массовые рассылки почти по умолчанию предполагают персонализацию. Это касается любых рассылок, от корпоративных новостей до массовых маркетинговых кампаний. И любого способа отправки, от стандартного слияния почты в MS Word до специализированных SendGrid или MailChimp. Зачастую единственный общий знаменатель — это список получателей в Excel. Так возможно ли отправлять массовые персонализированные рассылки без помощи Word или других программ?

Надстройка XLTools «Email рассылки» позволяет создать слияние вашей почты со списком получателей в Excel и отправлять массовые персонализированные рассылки напрямую из интерфейса Excel:

  • Не нужно переключаться между окнами, импортировать данные, запускать Word или другие программы
  • Установка связи с любым вашим email через SMTP — Gmail, Yandex, Outlook, т.д.
  • Вложение файлов любого формата с вашего компьютера
  • Вложение одинаковых файлов всем или разных файлов разным получателям
  • TXT или HTML шаблоны сообщения с любыми персонализированными полями

Добавить «Email рассылки» в Excel 2016, 2013, 2010, 2007

Подходит для: Microsoft Excel 2016 – 2007, desktop Office 365 (32-бит и 64-бит).

Скачать надстройку XLTools

как сделать список рассылки в excel

Как работать с надстройкой:

  • Кому будет полезна надстройка XLTools «Email рассылки»
  • Как работает слияние почты в Excel
  • Как связать «Email рассылки» в Excel с вашим почтовым ящиком
  • Как создать список получателей в Excel
  • Как вложить файлы в сообщения email рассылки
  • Как создать шаблон email сообщения и отправить персонализированную рассылку
  • Как выглядит сообщение, отправленное «Email рассылкой», в почтовом ящике получателя
  • Какой лимит отправки сообщений в XLTools «Email рассылки»

Кому будет полезна надстройка XLTools «Email рассылки»

Предположим, ваша компания планирует провести мероприятие, и вам нужно отправить email приглашения 50-60 партнёрам. Чтобы сообщения не выглядели как спам, вам нужно, чтобы каждому партнёру пришло персонализированное письмо с обращением по имени. Кроме того, вы не хотите случайно раскрыть контакты всех партнёров в строке «КОМУ» — так что каждое письмо должно быть адресовано только одному партнёру. Надстройка XLTools «Email рассылки» поможет выполнить рассылку именно так, при этом сэкономив вам время.

  • Используйте эту надстройку, если вы привыкли хранить списки контактов в Excel. Все операции выполняются напрямую в интерфейсе Excel — без необходимости переключаться между email, Excel, Word и файлами вложения.
  • Используйте «Email рассылки» для отправки массовых электронных сообщений с любого вашего email аккаунта: Outlook, Gmail, Yandex, Интернет провайдеры, провайдеры веб-хостинга, сервисы SMTP ретрансляции как SendGrid или MailChimp, т.д.
  • «Email рассылки» для рабочих рассылок: отправляйте приглашения партнёрам, напоминания об оплате счета клиентам, презентации коллегам, отчёты об успеваемости студентам, т.д.
  • «Email рассылки» для личных рассылок: отправляйте план совместной поездки друзьям и семье, повестку собрания членам родительского комитета, т.д.
  • «Email рассылки» для маркетинговых рассылок: отправляйте новостную рассылку подписчикам, специальные предложения клиентам, промо-акции читателям блога, т.д.

Обратите внимание, что надстройка XLTools «Email рассылки» не является сервисом email-рассылок — это надстройка Excel для повышения продуктивности работы. И хотя XLTools не устанавливает лимит отправки, ваш почтовый домен его наверняка устанавливает лимит, как и штрафы за его нарушение.

Как работает слияние почты в Excel

Надстройка XLTools «Email рассылки» НЕ является сервисом email-рассылок. Это надстройка Excel для повышения продуктивности работы, которая упрощает массовую отправку персонализированных рассылок, с быстрой настройкой параметров:

  1. Свяжите «Email рассылки» со своим email аккаунтом.
  2. Создайте список получателей в таблице Excel.
  3. Создайте шаблон email сообщения, добавьте метки для вставки персонализированных данных.
  4. Нажмите «Отправить» — и отправьте массовую персонализированную рассылку, не покидая интерфейса Excel!

Надстройка «Email рассылки» никак не может повлиять на спам-фильтры какой-либо электронной почты. В конечном итоге, вы не можете предугадать, отправит (или не отправит) почтовый ящик получателя ваше письмо в спам. Каждый почтовый домен устанавливает собственные алгоритмы фильтрации спама.

Как связать «Email рассылки» в Excel с вашим почтовым ящиком

Свяжите «Email рассылки» в Excel с вашим почтовым ящиком посредством SMTP (Simple Mail Transfer Protocol — простой протокол передачи электронной почты). Это работает практически с любым email аккаунтом: личной или рабочей почтой на Outlook, Gmail, Yandex, Интернет провайдеры, провайдеры веб-хостинга, сервисы SMTP ретрансляции, т.д.

  1. Нажмите кнопку «Настройки» на вкладке XLTools > Откройте вкладку «Email рассылки (SMTP)».
  2. «Email отправителя» – адрес вашей электронной почты, с которой будет осуществлена рассылка.
    Напр., your_name@gmail.com.
  3. «SMPT Сервер» и «Порт» заполнятся автоматически; в противном случае обратитесь к вашему системному администратору.
  4. «Имя отправителя» – введите свое имя, название компании или любое другое, как оно будет отображаться в почтовом ящике получателей.
    Напр., «Семинары XYZ».
  5. «Имя пользователя» и «Пароль» – привяжите свою электронную почту.
  6. При необходимости отметьте флажком «Использовать SSL/TLS». Криптографические протоколы SSL (Secure Sockets Layer, уровень защищённых сокетов) и TLS (Transport Layer Security, безопасность транспортного уровня) создают безопасную связь между вашим email сервером и вашим компьютером.

Для проверки связи с этой электронной почтой нажмите кнопку «Отправить тестовый Email…». Тестовое сообщение будет сразу же отправлено.

как сделать список рассылки в excel

Как создать список получателей в Excel

Таблица Excel — это удобный способ хранения контактов. Каждая строка содержит сведения об одном получателе. Каждый столбец представляет собой персонализированное поле, напр. Email, Имя, Отчество, т.д. Эта Excel таблица также служит источником данных для «Email рассылок». Данные этих персонализированных полей позднее заместят соответствующие метки в шаблоне email сообщения.

Чтобы создать создание список получателей с нуля:

  1. Нажмите кнопку «Email рассылок» «Создать список рассылки» на панели XLTools.
  2. Отметьте флажками нужные поля, напр., Имя, Фамилия.
    Внимание: столбец «Email» добавляется по умолчанию.
  3. Отметьте флажком «Вложение», если вы хотите приложить файлы.
  4. Укажите, поместить ли список рассылки на новый или на существующий лист. 
  5. Нажмите «Создать» > Готово.
  6. Заполните таблицу своими данными. При необходимости вручную добавьте столбцы для других персонализированных полей, напр. «РегНомер». Число столбцов не ограничено.

как сделать список рассылки в excel

Чтобы использовать свой существующий список контактов:

  1. Откройте ваш список контактов в Excel.
  2. Отформатируйте список как таблицу:
    Выделите диапазон > На вкладке «Главная» нажмите «Форматировать как таблицу» > Выберете любой подходящий стиль таблицы.
  3. Присвойте заголовки столбцам, напр., «Email», «Имя», «Фамилия», «РегНомер», «Вложение», т.д.

как сделать список рассылки в excel

Как вложить файлы в сообщения email рассылки

Вы можете вложить 1 или 2 файла каждому получателю вашей рассылки. Вы можете вложить файл любого формата: PDF, DOCX, PPTX, XLSX, JPEG, т.д. Учтите ограничения вашего почтового домена на размер вложений. Обычно, размер сообщения с вложениями не может превышать 10-20 MB.

  1. Откройте свой список получателей.
  2. Добавьте столбец для указания файловых вложений:
    • Чтобы приложить один файл: добавьте один столбец, напр. «Вложение 1».
    • Чтобы приложить два файла: добавьте два столбца, напр. «Вложение 1» и «Вложение 2».
  3. Укажите путь к файлу на вашем компьютере, напр., C:DocumentsПрограмма-Семинара.pdf.
    • Чтобы отправить один и тот же файл всем получателям: скопируйте путь к файлу во все ячейки столбца вложений.
    • Чтобы отправить разные файлы разным получателям: укажите путь к файлам для каждого получателя индивидуально.
    • Чтобы не отправлять вложений некоторым получателям: оставьте соответствующие ячейки пустыми.

Указанные файлы будут прикреплены к письмам в вашей рассылки. Далее перейдите к созданию шаблона email сообщения.

Как создать шаблон email сообщения и отправить персонализированную рассылку

Email шаблон — это некая заготовка, обезличенное email сообщение. Использование в шаблоне общих меток даёт возможность автоматически персонализировать каждое письмо: надстройка «Email рассылки» возьмёт данные из вашего списка контактов в Excel и заменит эти общие метки конкретными данными для каждого получателя. К примеру, она заменит общую метку на имя получателя «Александр».

  1. Нажмите кнопку «Отправить рассылку» на вкладке XLTools > Откроется диалоговое окно.
  2. Укажите диапазон списка рассылки, включая заголовки.
  3. Подтвердите столбец, который содержит email адреса получателей:
    Напр., выберите поле «Email».
  4. Подтвердите столбцы, которые содержат пути к файлам вложений:
    Напр., выберите поля «Вложение 1» и «Вложение 2».
  5. Напишите «Тему сообщения» так, как она должна отображаться в почтовом ящике получателя.
    Напр., напечатайте «Подтверждение участия в семинаре».
  6. Введите текст сообщения в редакторе:
    • Напечатайте текст сообщения. При необходимости используйте инструменты форматирования текста: шрифт, цвет, выравнивание, вставить ссылку, вставить изображение, т.д.
    • Или, нажмите кнопку «Загрузить HTML из файла», чтобы использовать свой существующий HTML шаблон.
  7. Выбирайте метки из списка возможных и вставляйте их в квадратных скобках:
    Напр., , .

как сделать список рассылки в excel

Внимание: после нажатия кнопки «Отправить» и до окончания отправки будет невозможно внести изменения в список получателей или в шаблон сообщения. Рекомендуем сначала протестировать рассылку. Напр., создайте тестовый список получателей, указав в нём только свои email адреса — и отправьте email себе. Проверьте, чтобы метки корректно замещались персонализированными данными, чтобы в тексте и теме письма не было ошибок и опечаток. Убедитесь, что ваше сообщение выглядит профессионально.

Как только вы нажмёте «Отправить», XLTools «Email рассылки» сразу же начнёт отправку массовой персонализированной рассылки:

  • Email сообщения отправляются одно за другим, напрямую из интерфейса Excel.
  • Статус отправки (либо Sent — отправлено, либо указание ошибки — error) появится в последнем столбце вашего списка рассылки.
  • Отправленные сообщения вы сможете найти в «Исходящих» или «Отправленных» письмах в своём почтовом ящике.
  • Внимание: статус доставки сообщения не отслеживается.

как сделать список рассылки в excel

Как выглядит сообщение, отправленное «Email рассылкой», в почтовом ящике получателя

  • Каждый человек из вашего Excel списка рассылки получает персонализированное email сообщение.
  • Каждое сообщение отправляется индивидуально — получатель не видит email адреса других получателей.
  • Все метки корректно замещаются данными для каждого конкретного получателя.
  • Указанные файлы автоматически прикрепляются к сообщению.

как сделать список рассылки в excel

как сделать список рассылки в excel

Какой лимит отправки сообщений в XLTools «Email рассылки»

Надстройка XLTools «Email рассылки» не является сервисом email-рассылок и не ограничивает число отправляемых email сообщений. Массовая рассылка отправляется с вашего email аккаунта.

Внимание: у каждого почтового домена (поставщика услуг электронной связи) существует своя политика о квотах исходящих сообщений, размера вложений и размера почтового ящика. Превышение лимита отправки грозит блокировкой, занесением в чёрный список или другими санкциями. Свяжитесь с вашим поставщиком и уточните свой лимит на отправку электронных сообщений посредством SMTP.

  • Бесплатные email аккаунты предназначены для личной переписки и не созданы для массовых рассылок. Напр., лимит на Gmail и Yandex составляет около 50-100 писем/день.
  • Рабочая почта или собственные SMTP-серверы допускают гораздо большее число отправленных сообщений.
  • Специализированные сервисы email рассылок, напр. SendGrid или MailChimp, предлагают тысячи сообщений в месяц в зависимости от типа подписки.

Появились вопросы или предложения? Оставьте комментарий ниже.

Зачастую базы данных e-mail адресов электронной почты либо ведутся в приложении Excel, либо экспортируются в Excel-файл из других источников, поэтому для многих пользователей актуальным становится вопрос рассылки писем на основе данных, содержащихся в Excel-файлах.

Стандартные возможности Excel ограничиваются отправкой активной рабочей книги по электронной почте (Кнопка Office/Отправить/Электронная почта), в то время как возможности Visual Basic for Application предоставляют пользователям Excel и Outlook практически неограниченные возможности. Существует множество различных способов отправки электронной почты прямо из приложения Excel, как при помощи почтовых клиентов, таких как Outlook или The Bat, так и без их использования. В этой статье речь пойдет об отправке почты из Excel при помощи почтовой программы Outlook. 

Отправка писем макросом

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

Готовая надстройка для Excel по рассылке электронных писем, созданная на основе макроса, сочетает в себе широкие возможности VBA и простоту в использовании. Ниже представлено диалоговое окно надстройки.

kak otpravit pisma iz excel

При помощи полей, расположенных в левой части диалогового окна можно выбрать способ рассылки и задать диапазоны ячеек, данные из которых будут использоваться при формировании электронных писем. Опции правой части диалогового окна позволяют использовать дополнительные параметры, например, подставлять имена получателей в темы и/или тексты писем, отправлять html-файл в теле письма либо использовать стандартную подпись Outlook, которая также представляет собой html-файл. Кроме того разными почтовыми сервисами используются различные ограничения на отправку писем по размеру, по количеству, по скорости отправки и так далее (рекомендуется ознакомиться с ними заранее), и для того чтобы не выходить за рамки этих ограничений, в надстройке предусмотрена опция «Использовать задержку между письмами», которая позволяет настроить паузу между отправкой писем.

Возможности надстройки

С этой надстройкой Вы сможете:

1. Отправлять на разные адреса электронной почты письма одинакового содержания и с одной темой;

* в ячейке для адреса получателя может быть указано несколько адресов электронной почты без пробелов, через знак-разделитель «;»  (при этом получатель письма будет видеть все эти адреса). 

2. отправлять на разные адреса электронной почты индивидуальные письма со своим содержанием и разными темами;

3. формировать электронные письма из Excel-таблиц путем выделения диапазонов, содержащих необходимую информацию; 

4. создавать персональные электронные письма, используя имена получателей в темах и/или в тексте писем (при выборе опций, использующих имена адресатов, поле для выбора диапазона с именами становится активным);

5. устанавливать паузу между отправкой писем;

6. вставлять html-файл в тело письма либо добавлять к тексту письма стандартную подпись, созданную в Outlook;

7. добавлять изображения (картинки) к письму, созданному на основе html-файла;

8. добавлять во вложения к письмам одинаковый набор файлов;

9. добавлять к каждому письму отдельное вложение;

10. отправлять письма из разных аккаунтов, используемых в Microsoft Outlook;

11. форматировать отправляемый текст при помощи html-тэгов прямо в ячейках;

12. создавать электронные письма, но не отправлять их автоматически, а сохранять в черновики для проверки, корректировки и последующего отправления вручную;

13. одним кликом мыши вызывать диалоговое окно макроса прямо из панели инструментов Excel.

rassylka pisem iz Excel cherez Outlook

CompleteSolutionнадстройка для рассылки писем из Excel через Microsoft Outlook

Внимание! При автоматизированной рассылке писем необходимо помнить о том, что:

1. При отправке сообщений при помощи макросов и надстроек может появляться окно подтверждения отправки для каждого письма (о том как избавиться от этого окна можно прочитать отдельно);

2. в некоторых почтовых сервисах, как платных так и бесплатных, действуют различные ограничения на отправку писем, например по количеству отправляемых писем в час или в сутки, по максимальному размеру отправляемых писем, по количеству писем, отправленных на несуществующие адреса и так далее. При несоблюдении таких ограничений Ваш почтовый ящик может быть заблокирован;

3. при использовании паузы между отправкой писем в этой надстройке, Excel будет заблокирован до полного окончания отправки писем.

Видео по работе с надстройкой

Как отправить письма с разных адресов?

В приложении Outlook может быть настроено несколько учетных записей, при этом отправка писем ведется с того адреса, который используется по умолчанию. Если необходимо сделать так, чтобы рассылка велась с другого адреса, можно написать этот адрес в ячейках столбца на листе Excel и в поле «Учетные записи» диалогового окна надстройки выделить эти ячейки. Более того, можно отправлять письма с разных аккаунтов (все они должны быть настроены в Outlook). Для этого на рабочем листе Excel создается список учетных записей, с которых будет вестись рассылка и диапазон ячеек этого списка указывается в поле «Учетные записи». rassylka pisem s raznyh uchetnyh zapisej

Как добавить вложения к письмам?

В надстройке реализовано два разных способа добавления вложений к отправляемым письмам. Установка флажка в поле «Добавить файлы во вложение» позволяет прицепить несколько файлов, при этом выбранный набор файлов будет прикреплен к каждому письму почтовой рассылки. Можно прикрепить индивидуальное вложение к каждому письму, в таком случае используется поле «Вложения», а на рабочем листе для каждого адресата прописывается полный путь к файлу. Этим способом можно вложить только по одному файлу в каждое письмо. Также можно комбинировать описанные выше способы отправки вложений, то есть уникальный файл вложить при помощи поля «Вложения», а одинаковые для всех файлы вложить при помощи установки флажка в поле «Добавить файлы во вложение». Может возникнуть необходимость отправки нескольких персональных файлов каждому адресату. В таком случае необходимо для каждого письма создавать индивидуальные архивы и отправлять их через поле «Вложения». Создание архивов можно выполнять программно, в автоматическом режиме.

Как вставить картинку в письмо?

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

1. Для отправки картинок обычными вложенными файлами достаточно просто установить флажок в поле «Добавить файлы во вложение» и при помощи кнопки обзора выбрать необходимые файлы, не зависимо от того используется html-файл или нет;

2. Чтобы вставить картинку в тело письма, необходимо использовать html-файл. Картинку предварительно нужно выложить в сеть интернет, чтобы она была доступна получателям писем, поместив ее на сервер любого файлобменника, например на www.imageup.ru (либо другой сервис, предоставляющий прямые ссылки). В свою очередь в html-файле достаточно в нужном месте вставить ссылку на эту картинку, а также указать размеры картинки, при этом если ссылка указана правильно, получатель письма должен увидеть изображение в теле письма. Ссылка должна иметь вид:

<img src=’http://macros-vba.ru/files/Logo.png’ height=39 width=165>  если изображение размещено на сайте, или

<img src=’http://www.imageup.ru/img67/2780968/123123.jpg’ height=39 width=165> если изображение размещено на сервере файлобменника (адрес картинки сгенерирован файлобменником).

Создать html-файл можно при помощи текстового редактора Word, для этого при сохранении файла необходимо выбрать тип файла «Веб-страница (*.htm; *.html)». После сохранения файла, его необходимо открыть при помощи блокнота или текстового редактора NotePad++, вставить в нужное место документа ссылку на картинку, после чего сохранить внесенные изменения.

Как отправить письмом отформатированный текст?

Механизм, используемый для автоматической рассылки писем, позволяет отправлять только неотформатированный текст, то есть, если в ячейках Excel для рассылки приготовлен текст, имеющий переносы строк, измененные цвета и размеры шрифтов, отступы и так далее, то при автоматическом формировании писем все эти настройки формата текста игнорируются. Тем не менее, осуществить отправку отформатированного текста все-таки можно, для этого в тексте писем достаточно использовать html-тэги, например, для переноса строки — тэг br, заключенный в угловые скобки <>, а для того чтобы сделать текст жирным — тэги b и /b, также в угловых скобках каждый. Разобраться достаточно просто.

Как совместить текст из ячеек с текстом html-файла?

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

html tegi v tekste pisem

Для решения этой задачи удобнее предварительно объединить имена адресатов с текстом письма при помощи текстовой функции «СЦЕПИТЬ», сохранить результат преобразования в виде значений и уже после этого добавлять необходимые html-тэги. В примере на изображении показано как при помощи тэгов осуществить выравнивание текста по центру, задать курсив, название, размер и цвет шрифта. Образцы файлов прилагаются. После того как все необходимые тэги сформированы в одной ячейке, их можно быстро подставить в начале и в конце значений остальных ячеек столбца. Поможет в этом надстройка для подстановки символов и значений.

Каким образом можно письма сформировать, но не отправлять?

При установке флажка в поле «Создать, но не отправлять» сформированные письма не отправляются автоматически, а сохраняются в папку «Черновики», предоставляя возможность произвести проверку, при необходимости внести изменения и отправить проверенные почтовые сообщения в ручном режиме.

Другие материалы по теме:

Хитрости »

1 Май 2011              386321 просмотров


Прежде чем начать читать статью прошу принять к сведению объявление: используйте СВОИ АДРЕСА ЭЛ.ПОЧТЫ при тестировании кодов. Не надо отсылать письма на указанные в статье e-mail адреса- это все приходит мне на почту. Помимо этого Вы сами не сможете понять работает или нет, т.к. письма придут мне, а не Вам.
Спасибо за понимание
P.S. А если написанное выше Вы все же проигнорировали и отправили письмо на мои адреса электронной почты — это означает, что Вы соглашаетесь с тем, что вся информация внутри письма, включая вложения, может быть использована мной без ограничений в личных целях.

  • Отправка через меню Excel
  • Простая отправка книги через VBA без Outlook
  • Отправка писем через VBA при помощи Outlook(с вложениями)
  • Отправить письма через Outlook с картинкой в теле письма
  • Массовая рассылка писем по адресам при помощи Outlook
  • Отправка сообщения без использования Outlook — используем CDO

Отправить письмо из Excel можно несколькими способами, в том числе и через написание кода в VBA.

Отправка через меню Excel
Отправку без кода осуществить достаточно просто:

  • Excel 2003: Файл(File)Отправить(Send To)Сообщение(Mail Recipient)
    и выбрать способ отправки:

    • Сообщение(Mail Recipient) — создается сообщение в программе по умолчанию для отправки электронных писем
    • Сообщение (для ознакомления) (Mail Recipient for Review) — вполне интересный вариант. Перед отправкой для книги включается отслеживание изменений(Сервис(Tools)Исправления(Track changes)). Можно воспользоваться этим методом, чтобы отправить получателю для внесения им изменений, а после отследить их(СервисИсправленияВыделить исправления(Highlight changes))
    • Сообщение (как вложение)(Mail Recipient as attachment) — создается сообщение в программе по умолчанию для отправки электронных писем, в которое вложением вкладывается активная книга целиком
    • По маршруту(Routing Recipient) — практически тоже самое, что и Сообщение (для ознакомления) (Mail Recipient for Review) с той разницей, что письмо с вложением пересылается как эстафета от одного получателя к другому. После этого так же можно отследить изменения, внесенные каждым пользователем
    • Папка Exchange(Exchange folder) — активная книга автоматически сохраняется в заданную папку общего сервера Microsoft Exchange. Доступ к этой книге будет открыт всем участникам рабочей группы
    • Факс пользователю службы факсов интернета(Fax) — отправляет содержимое книги по факсу указанным получателям. Для использования данной возможности должна быть установлена служба факсов
  • Excel 2007: Кнопка ОфисОтправить(Send)Сообщение(E-mail)
  • Excel 2010: Файл(File)Сохранить и отправить(Save & Send)Отправить(Send Using E-mail)
  • Далее выбирается способ отправки:

    • Как вложение(Send as attachment) — будет автоматически запущена почтовая программа по умолчанию и создано новое письмо, в которое уже будет вложен файл книги, из которой была вызвана команда
    • Как ссылку(Send link) — доступно, только если файл находится на сетевом ресурсе. После нажатия будет создано новое письмо в почтовой программе по умолчанию, в тело которого будет вставлена ссылка на книгу
    • Как PDF(Send as PDF) — файл будет автоматически сохранен в формате PDF, далее будет создано новое письмо в почтовой программе по умолчанию и файл PDF будет вставлен в письмо
    • Как XPS(Send as XPS) — файл будет автоматически сохранен в формате PDF, далее будет создано новое письмо в почтовой программе по умолчанию и файл PDF будет вставлен в письмо
    • Отправить как факс через интернет(Send as internet fax) — если у вас на ПК установлена служба работы с факсами и есть возможность отправлять и получать факсы на ПК — то данная команда отправит данные активного листа файла как факс

Простая отправка книги через VBA без Outlook

Описанные выше действия можно выполнить так же кодом(так же будет использоваться программа, установленная по умолчанию для отправки писем):

Sub SendMailStandart()
    ActiveWorkbook.SendMail "mail1@excel-vba.ru", "Тема письма"
End Sub

Также можно указать несколько получателей:

Sub SendMailStandart_MassRecipients()
    ActiveWorkbook.SendMail Array("mail1@excel-vba.ru", "mail2@excel-vba.ru"), "Тема письма"
End Sub

Внутри скобок Array можно в кавычках через запятую указать достаточное количество получателей.
Данный метод универсален, но работает только с активным файлом. Нельзя выбрать файл с диска и отправить как вложение. Кроме того, нельзя отправить более одного файла разом и указать текст письма.
Поэтому очень часто на форумах возникает вопрос как отправить письмо из Excel кодом с указанием темы, текста и вложения.
Есть несколько вариантов:


Отправить письмо через Outlook кодом VBA

Option Explicit
 
Sub Send_Mail()
    Dim objOutlookApp As Object, objMail As Object
    Dim sTo As String, sSubject As String, sBody As String, sAttachment As String
 
    Application.ScreenUpdating = False
    On Error Resume Next
    'пробуем подключиться к Outlook, если он уже открыт
    Set objOutlookApp = GetObject(, "Outlook.Application")
    Err.Clear 'Outlook закрыт, очищаем ошибку
    If objOutlookApp Is Nothing Then
        Set objOutlookApp = CreateObject("Outlook.Application")
    End If
    'раскомментировать строку, если в Outlook несколько учетных записей и нужно подключиться к конкретной(только если Outlook закрыть)
    '   [параметры]: Session.Logon "имя профиля","пароль",[показывать окно выбора профиля], [запускать в новой сессии]
    'objOutlookApp.Session.Logon "profile","1234",False, True
    Set objMail = objOutlookApp.CreateItem(0)   'создаем новое сообщение
    'если не получилось создать приложение или экземпляр сообщения - выходим
    If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub
 
    sTo = "AddressTo@mail.ru"    'Кому(можно заменить значением из ячейки - sTo = Range("A1").Value)
    sSubject = "Автоотправка"    'Тема письма(можно заменить значением из ячейки - sSubject = Range("A2").Value)
    sBody = "Привет от Excel-VBA"    'Текст письма(можно заменить значением из ячейки - sBody = Range("A3").Value)
    sAttachment = "C:TempКнига1.xls"    'Вложение(полный путь к файлу. Можно заменить значением из ячейки - sAttachment = Range("A4").Value)
 
    'создаем сообщение
    With objMail
        .To = sTo 'адрес получателя
        .CC = "" 'адрес для копии
        .BCC = "" 'адрес для скрытой копии
        .Subject = sSubject 'тема сообщения
        .Body = sBody 'текст сообщения
        '.HTMLBody = sBody 'если необходим форматированные текст сообщения(различные шрифты, цвет шрифта и т.п.)
        'добавляем вложение, если файл по указанному пути существует(dir проверяет это)
        If sAttachment <> "" Then
            If Dir(sAttachment, 16) <> "" Then
                .Attachments.Add sAttachment 'просто вложение
                'чтобы отправить активную книгу вместо sAttachment указать ActiveWorkbook.FullName
            End If
        End If
        .Send 'Display, если необходимо просмотреть сообщение, а не отправлять без просмотра
    End With
 
    Set objOutlookApp = Nothing: Set objMail = Nothing
    Application.ScreenUpdating = True
End Sub

Этот код отправляет одно письмо и одно вложение за раз. Но если несколько раз вызвать метод .Attachments.Add, то можно добавить еще файлы:

.Attachments.Add "C:TempКнига1.xlsx"
.Attachments.Add "C:TempКнига2.xlsx"
.Attachments.Add "C:DocumentsReport.rar"

Строка:

objOutlookApp.Session.Logon "user","1234",False, True

имеет особое значение. По сути она нужна только в тех случаях, когда в Outlook настроено несколько профилей(не путать с учетными записями) и запускать нужно от конкретного. Если профиль только один или не указан, то Outlook запускается с профилем по умолчанию. Для этого строку нужно записать без параметров(так же можно записать эту строку, если Outlook при попытке создания письма выдает ошибку профиля):

objOutlookApp.Session.Logon

Важно помнить: пути для файлов в качестве вложений должны содержать полный путь до файла, включая его имя и расширение: C:DocumentsReport.rar. При указании только имени Report.rar или пути без расширения (C:DocumentsReport) ошибки не будет, но вложения не будут помещены в сообщения и адресату отправится письмо без вложений.

Этот код создает сообщение, но есть маленький нюанс — если в Outlook настроено добавление подписей в новые сообщения — то созданные кодом VBA письма игнорирует эту настройку(особенность Outlook, так назовем). Поэтому, если необходимо отправлять письма с подписью, то ознакомьтесь со статьей: Вставить в письмо подпись из Outlook через VBA
В этой же статье можно посмотреть пример составления письма с форматированным текстом.


 
Отправить письма через Outlook с картинкой в теле письма

Sub Send_Mail_With_Picture()
    Dim objOutlookApp As Object, objMail As Object
    Dim sTo As String, sSubject As String, sBody As String, sAttachment As String, sPicture As String
 
    Application.ScreenUpdating = False
    On Error Resume Next
    'пробуем подключиться к Outlook, если он уже открыт
    Set objOutlookApp = GetObject(, "Outlook.Application")
    Err.Clear 'Outlook закрыт, очищаем ошибку
    If objOutlookApp Is Nothing Then
        Set objOutlookApp = CreateObject("Outlook.Application")
    End If
    'objOutlookApp.Session.Logon "user","1234",False, True
    Set objMail = objOutlookApp.CreateItem(0)   'создаем новое сообщение
    'если не получилось создать приложение или экземпляр сообщения - выходим
    If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub
 
    sTo = "AddressTo@mail.ru"    'Кому(можно заменить значением из ячейки - sTo = Range("A1").Value)
    sSubject = "Автоотправка"    'Тема письма(можно заменить значением из ячейки - sSubject = Range("A2").Value)
    sBody = "Привет от Excel-VBA"    'Текст письма(можно заменить значением из ячейки - sBody = Range("A3").Value)
    sAttachment = "C:TempКнига1.xls"    'Вложение(полный путь к файлу. Можно заменить значением из ячейки - sAttachment = Range("A4").Value)
    sPicture = "C:ДокументыИзображенияExcel_vba_ru.png" 'если надо вставить в письмо картинку
    'создаем сообщение
    With objMail
        .To = sTo 'адрес получателя
        .CC = "" 'адрес для копии
        .BCC = "" 'адрес для скрытой копии
        .Subject = sSubject 'тема сообщения
'        .Body = sBody 'текст сообщения без форматирования
        .HTMLBody = sBody 'если необходим форматированные текст сообщения(различные шрифты, цвет шрифта и т.п.)
        'чтобы картинка была видна внутри сообщения - надо её сначала добавить как вложение
        'если картинка по указанному пути существует(dir проверяет это)
        If Dir(sPicture, 16) <> "" Then
            If Dir(sPicture, 16) <> "" Then
                .Attachments.Add sPicture
                'теперь вставляем код картинки
                .HTMLBody = .HTMLBody & "<p>Картинка в письме</p>" & "<img src=cid:" & Replace(Dir(sPicture, 16), " ", "%20") & ">" ' & " height=240 width=180>"
            '" height=240 width=180>" - если нужны размеры картинки
            End If
        End If
        'добавляем вложение, если файл по указанному пути существует(dir проверяет это)
        If sAttachment <> "" Then        
            If Dir(sAttachment, 16) <> "" Then
                .Attachments.Add sAttachment 'просто вложение
            End If
        End If
        .Send 'Display, если необходимо просмотреть сообщение, а не отправлять без просмотра
    End With
 
    Set objOutlookApp = Nothing: Set objMail = Nothing
    Application.ScreenUpdating = True
End Sub

Этот код отправляет одно письмо и вставляет одну картинку. За это отвечает строка

"<img src=cid:" & Replace(Dir(sPicture, 16), " ", "%20") & ">"

Если картинку надо вложить с заранее указанными размерами, то строка будет выглядеть так:

"<img src=cid:" & Replace(Dir(sPicture, 16), " ", "%20") & " height=240 width=180>"
'height - высота
'width  - ширина

Если надо добавить несколько картинок, то метод .Attachments.Add sPicture надо будет вызвать столько раз, сколько картинок(для каждого свой путь к картинке).

Важно помнить: пути для картинок должны содержать полный путь до файла, включая его имя и расширение: C:ДокументыИзображенияExcel_vba_ru.png. При указании только имени Excel_vba_ru.png или пути без расширения (C:ДокументыИзображенияExcel_vba_ru) ошибки не будет, но картинка не будет вставлена, а вместо неё скорее всего будет текст «Ошибка загрузки картинки!» или пустой квадрат вместо реальной картинки.


 
Массовая рассылка писем по адресам

Так же можно сделать нечто вроде рассылки, организовав цикл по ячейкам. Предположим, что в столбце А записаны адреса, в столбце В тема, в столбце С текст сообщения, в столбце D путь к вложениям:
Таблица адресов
Тогда можно применить следующий код:

Sub Send_Mail_Mass()
    Dim objOutlookApp As Object, objMail As Object
    Dim sTo As String, sSubject As String, sBody As String, sAttachment As String
    Dim lr As Long, lLastR As Long
 
    Application.ScreenUpdating = False
    On Error Resume Next
    'пробуем подключиться к Outlook, если он уже открыт
    Set objOutlookApp = GetObject(, "Outlook.Application")
    Err.Clear 'Outlook закрыт, очищаем ошибку
    If objOutlookApp Is Nothing Then
        Set objOutlookApp = CreateObject("Outlook.Application")
    End If
    'произошла ошибка создания объекта - выход
    If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub
    'objOutlookApp.Session.Logon "user","1234",False, True
 
    lLastR = Cells(Rows.Count, 1).End(xlUp).Row
    'цикл от второй строки(начало данных с адресами) до последней ячейки таблицы
    For lr = 2 To lLastR
        Set objMail = objOutlookApp.CreateItem(0)   'создаем новое сообщение
        'создаем сообщение
        With objMail
            .to = Cells(lr, 1).Value 'адрес получателя
            .Subject = Cells(lr, 2).Value 'тема сообщения
            .Body = Cells(lr, 3).Value 'текст сообщения
            'вложение(если ячейка не пустая и путь к файлу указан правильно)
            If Cells(lr, 4).Value <> "" Then   
                If Dir(Cells(lr, 4).Value, 16) <> "" Then
                    .Attachments.Add Cells(lr, 4).Value
                End If
            End If
            .Send 'Display, если необходимо просмотреть сообщение, а не отправлять без просмотра
        End With
    Next lr
 
    Set objOutlookApp = Nothing: Set objMail = Nothing
    Application.ScreenUpdating = True
End Sub

Скачать пример массовой рассылки:

  Массовая рассылка писем через Outlook.xls (60,0 KiB, 6 986 скачиваний)

При использовании этих кодов есть один недостаток: очень часто при программной отправке писем Outlook выдает окно с запросом подтверждения отправки. Сообщение может быть трех видов:

  • Программа пытается получить доступ к адресам электронной почты, хранящимся в Outlook. Если вы этого не ожидаете, нажмите кнопку «Запретить» и проверьте наличие последних обновлений для антивирусной программы.
  • Программа пытается отправить сообщение от вашего имени. Если вы этого не ожидаете, нажмите кнопку «Запретить» и проверьте наличие последних обновлений для антивирусной программы.
  • Программа пытается выполнить действие, которое может привести к отправке сообщения от вашего имени. Если вы этого не ожидаете, нажмите кнопку «Запретить» и проверьте наличие последних обновлений для антивирусной программы

Чтобы при программной отправке данных сообщений не появлялось, в версиях Outlook, начиная с 2007 можно отключить его настройками безопасности:

  • Outlook 2007: МенюПараметрыЦентр управления безопасностьюПрограммный доступ-установить Никогда не предупреждать о подозрительной активности (не рекомендуется)
  • Outlook 2010 и выше: ФайлПараметрыЦентр управления безопасностьюПрограммный доступ-установить Никогда не предупреждать о подозрительной активности (не рекомендуется)

ВАЖНО: Если компьютер управляется администратором Microsoft Exchange или Microsoft Windows Active Directory Domain Services и администратором в качестве параметров по умолчанию установлен запрет на внесение изменений в параметры безопасности пользователями, возможность изменения данных настроек безопасности программного доступа будет недоступна.

Важно: сам код рассылки не имеет никаких ограничений по числу отправляемых сообщений. Но различные почтовые серверы могут устанавливать свои лимиты. Например, Gmail и Yandex могут заблокировать email, с которого ведется рассылка, если общее количество отправленных сообщений превышает 100 штук в день. Поэтому производить важные массовые рассылки рекомендуется с собственного SMTP-сервера.


 

Но так же при отправке файлов и писем часто необходимо не привязываться к конкретной почтовой программе. Ведь далеко не все ставят Outlook. Многие используют иные почтовые программы, например TheBat.

Отправка сообщения без использования Outlook — используем CDO

Option Explicit
 
Sub Send_Mail()
    Const CDO_Cnf = "http://schemas.microsoft.com/cdo/configuration/"
    Dim oCDOCnf As Object, oCDOMsg As Object
    Dim SMTPserver As String, sUsername As String, sPass As String, sMsg As String
    Dim sTo As String, sFrom As String, sSubject As String, sBody As String, sAttachment As String
    On Error Resume Next
    'sFrom – как правило совпадает с sUsername
    SMTPserver = "smtp.yandex.ru"    ' SMTPServer: для Mail.ru "smtp.mail.ru"; для Яндекса "smtp.yandex.ru"; для Рамблера "mail.rambler.ru"
    sUsername = "YourMail@mail.ru"    ' Учетная запись на сервере
    sPass = "1234"    ' Пароль к почтовому аккаунту
 
    If Len(SMTPserver) = 0 Then MsgBox "Не указан SMTP сервер", vbInformation, "www.Excel-VBA.ru": Exit Sub
    If Len(sUsername) = 0 Then MsgBox "Не указана учетная запись", vbInformation, "www.Excel-VBA.ru": Exit Sub
    If Len(sPass) = 0 Then MsgBox "Не указан пароль", vbInformation, "www.Excel-VBA.ru": Exit Sub
 
    sTo = "AddressTo@mail.ru"    'Кому
    sFrom = "YourMail@yandex.ru"    'От кого
    sSubject = "Автоотправка"    'Тема письма
    sBody = "Привет от Excel-VBA"    'Текст письма
    sAttachment = "C:/Temp/Книга1.xls"    'Вложение(полный путь к файлу)
 
    'Назначаем конфигурацию CDO
    Set oCDOCnf = CreateObject("CDO.Configuration")
    With oCDOCnf.Fields
        .Item(CDO_Cnf & "sendusing") = 2
        .Item(CDO_Cnf & "smtpauthenticate") = 1
        .Item(CDO_Cnf & "smtpserver") = SMTPserver
        'если необходимо указать SSL
        '.Item(CDO_Cnf & "smtpserverport") = 465 'для Яндекса и Gmail 465
        '.Item(CDO_Cnf & "smtpusessl") = True
        '=====================================
        .Item(CDO_Cnf & "sendusername") = sUsername
        .Item(CDO_Cnf & "sendpassword") = sPass
        .Update
    End With
    'Создаем сообщение
    Set oCDOMsg = CreateObject("CDO.Message")
    With oCDOMsg
        Set .Configuration = oCDOCnf
        .BodyPart.Charset = "koi8-r"
        .From = sFrom
        .To = sTo
        .Subject = sSubject
        .TextBody = sBody
        'Проверка наличия файла по указанному пути
        If Len(sAttachment) > 0 Then
            If Dir(sAttachment, 16) <> "" Then
                .AddAttachment sAttachment
            End If
        End If
        .Send
    End With
 
    Select Case Err.Number
    Case -2147220973: sMsg = "Нет доступа к Интернет"
    Case -2147220975: sMsg = "Отказ сервера SMTP"
    Case 0: sMsg = "Письмо отправлено"
    Case Else: sMsg = "Ошибка номер: " & Err.Number & vbNewline & "Описание ошибки: " & Err.Description
    End Select
    MsgBox sMsg, vbInformation, "www.Excel-VBA.ru"
    Set oCDOMsg = Nothing: Set oCDOCnf = Nothing
End Sub

Данный код отправляет письмо, используя объект CDO(Collaboration Data Objects — присутствует во всех версиях Windows) и от имени Вашей учетной записи(либо Яндекс, либо Мэйл, либо Рамблер либо др.).

  • SMTPserver — Каждый из приведенных выше сервисов имеет свой сервер для отправки сообщений(его можно посмотреть на сайте сервиса). В комментариях к коду я написал три самых распространенных, но если Вы используете какой-то другой, то просто посмотрите на его сайте настройки для Outlook и отыщите тот параметр, который отвечает за SMTPserver.
  • sUsername — это Ваш логин для входа в почтовый сервис. Думаю тут все понятно. Единственный момент — обязательно указывать e-mail именно в полном виде — YourMail@mail.ru, даже если для входа на сервис через браузер Вы используете только первую часть записи(YourMail). Если необходимо подставить в качестве отправителя псевдоним(чтобы получатель видел не просто адрес, а ассоциированное имя учетной записи), то указывать надо именно в формате псевдонима:
    sFrom = "Excel-vba <YourMail@yandex.ru>"

    Excel-vba — и есть псевдоним. А сам адрес должен указываться между знаками <>

  • sPass — пароль доступа к Вашей учетной записи, который Вы используете для входа в почту.

Это основные моменты. Поля Кому(sTo), От кого(sFrom),Тема письма(sSubject), Текст письма(sBody) и Вложение(sAttachment) думаю не нуждаются в расшифровке.
Так же стоит учесть пару важных моментов: если на почтовом сервере используется шифрование, то необходимо раскомментировать(убрать знак апострофа) эти строки:

.Item(CDO_Cnf & "smtpserverport") = 465
.Item(CDO_Cnf & "smtpusessl")

Иначе вместо отправки письма получим ошибку «Отказ сервера SMTP». Серверы Яндекс и Gmail требуют шифрования, а значит для них указанные выше строки должны быть активированы(т.е. раскомментированы). Номер порта указывается в описании настроек сервера и для каждого сервера может быть своим, поэтому если с указанием приведенного в коде порта(«smtpserverport») письмо не отправляется — необходимо зайти в настройки почтового сервера и убедиться в правильности указания номера порта.

Чтобы использовать данный код вы можете либо просто скопировать его прямо со страницы, либо скачать файл. В файле программа немного упрощена к использованию — в ячейки листа вам необходимо будет внести поля: Кому(sTo), От кого(sFrom),Тема письма(sSubject), Текст письма(sBody) и Вложение(sAttachment) и выбрать SMTPserver. SMTPserver выбирается из выпадающего списка. Сам список является динамическим и расположен на листе «Settinngs«. Там же расположены поля Учетной записи и Пароль, которые автоматически подставляются в необходимые поля на листе «Отправка«. Т.к. список динамический Вы можете просто добавлять к уже имеющимся новые сервисы и потом просто выбирать их из списка. Так же в файле есть еще одна возможность — выбрать файл. Для этого надо просто нажать на кнопку и выбрать файл.

Скачать пример:

  Массовая рассылка писем через CDO — без Outlook.xls (64,0 KiB, 7 545 скачиваний)


Ввиду все более участившихся вопросов о том, как добавить к тексту письма картинку именно через CDO — описываю как это можно сделать. Я приведу лишь самый главный кусок кода — создание непосредственно сообщения. Весь остальной код остается таким же, как приведен выше.

With oCDOMsg
    Set .Configuration = oCDOCnf
    .From = sFrom
    .BodyPart.Charset = "windows-1251"
    .To = sTo
    .Subject = sSubject
    Set objbp = oCDOMsg.AddRelatedBodyPart("C:ДокументыИзображения11.jpg", "11.jpg", 1)
    objbp.Fields.Item("urn:schemas:mailheader:Content-ID") = "<11.jpg>"
    objbp.Fields.Update
    If Len(sAttachment) > 0 Then
        If Dir(sAttachment, 16) <> "" Then
            .AddAttachment sAttachment
        End If
    End If
    'для вложения картинки письмо лучше формировать в формате HTML
    .HTMLBody = "<img src=""11.jpg""><br />" & sBody
    .Send
End With

Самый главный момент:
AddRelatedBodyPart

    C:ДокументыИзображения11.jpg — указывается полный путь к файлу картинки на компьютере, включая расширение файла.
    11.jpg — указывается имя картинки с расширением. Это имя будет использовано внутри письма и именно его необходимо будет указать дальше в «urn:schemas:mailheader:Content-ID». И указывать обязательно в треугольных скобках: «<11.jpg>»
    внутри же самого письма в том месте, где должна отображаться картинки надо записать:

    в приведенном выше коде картинка вставляется в самом начале письма и после неё так же добавляется перенос на новую строку при помощи тэга

Также см.:
Отправка листа/книги по почте
Вставить в письмо подпись из Outlook через VBA
Вставить в письмо Outlook таблицу Excel с форматированием
Сохранить вложения из Outlook в указанную папку
Как отправить письмо от другой учетной записи Outlook


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Необходимо сделать рассылку по шаблону, имея список людей и их электронку в файле Excel. Иными словами надо разослать письма или приглашения по почте электронной, в которых Вы должны отчетливо указать фамилию, имя, отчество человека, обращение к нему, заполнить поле с логином и паролем.

Пример накидываем как обычный WORD файл.

1Список всех желающих получить такое письмо находится в таблице Excel, где четко установлены столбцы с ФИО человека,  Адресом, обращение и т.д.

0 - Как создать почтовую рассылку по Excell.xls файлу / MS Office Word и Outlook 2007
Пример списка получателей письма.

Программа Word может автоматизировать этот процесс,чтобы вам не пришлось вводить вручную каждое письмо, заполняя необходимые поля.

Для этого откройте ваше письмо, выполните команду: Начать слияние и дальше Сообщение электронной почты.

2Дальше выбираем таблицу Excel в которой хранится база Выбрать получателей, Использовать существующий список.

345Открываем через обзор наш файл (потом файл если переместить прийдется менять здесь путь). И выбираем на нем лист, на котором таблица. Обычно это №1.

4После этого начинаем указывать места куда нужно будет вставлять данные из таблицы.

3Выделяем участок мышью и в меню сверху тыкаем Вставить поле слияния. И указываем имя столбца в файле Excel, откуда он будет брать значение.

После этого можно скорректировать Получателей (можно использовать автофильтр либо снять галочки с «неполучателей»). Если получатели все, то ничего не трогаем.

Как сделать рассылку писем?

Можно просматривать письма, которые будут формироваться по ходу дела.

34Когда все что нужно сделали нажимаем Найти и объединить. Вот тут мы выбираем отправить электронные сообщения. Чтобы отправить нужно, чтобы аултук был почтарем по умолчанию. Иначе письма не отправятся.5

К слову сказать, таким же способом можно делать бумажные приглашения, письма или формировать файлы с приглашением. На любой вкус. Нужно было информатику учить :)

Обычно мы используем почтовые клиенты, такие как Outlook, Gmail и т. д., для отправки электронных писем. Но многие люди хранят данные в книгах Excel, и им необходимо отправлять некоторые данные другим, пока они работают с ними. Поэтому им необходимо отправлять электронные письма прямо из книги Excel, что экономит время на работу с почтовым клиентом. Это пошаговое руководство покажет вам, как отправлять электронные письма из Excel в различных условиях.

Внимание: Прежде чем применять следующие методы, вам необходимо настроить почтовый клиент Outlook на своем компьютере и установить его в качестве почтового клиента по умолчанию.

Содержание: [ Скрывать ]

(Щелкните любой заголовок в оглавлении ниже или справа, чтобы перейти к соответствующей главе.)


1. Основы отправки писем из Excel

В этом разделе представлены основы отправки электронных писем из Excel.

1.1 Отправка электронных писем из Excel с помощью встроенных функций Excel

Если вы хотите отправлять только простые электронные письма из Excel, включая только поля «Кому», «Тема», «Копия» и «Тело». В этом могут помочь встроенные функции Excel.


1.1.1 Отправка электронной почты из Excel с помощью формулы

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

Примечание: Если в полях «Кому» или «Копия» указано несколько получателей, разделите их точкой с запятой.

Этот раздел разделен на четыре части, чтобы показать вам шаги по добавлению адреса электронной почты, получателей копий, строки темы и основного текста отдельно в формулу гиперссылки. Пожалуйста, сделайте следующее.

Синтаксис и аргументы HYPERLINK функции следующие.

Синтаксис

HYPERLINK(link_location, [friendly_name])

аргументы

Link_location (обязательно): Путь и имя файла открываемого документа;

Советы. В этом руководстве все поля, которые нам нужны для электронного письма, такие как адрес электронной почты получателя, получатели копий, строка темы и основной текст, должны быть помещены в первый аргумент «link_location».

Дружественное имя (необязательно): значение перехода, отображаемое в ячейке.


1.1.1.1 Добавить адрес электронной почты в формулу гиперссылки

Здесь мы используем «почта:» как часть формулы для добавления получателя электронной почты. В этом примере адрес электронной почты первого получателя находится в ячейке B2, поэтому нам нужно добавить «mailto:» и сослаться на ячейку B2.

«почта:»&B2

1. Выберите ячейку для отображения гиперссылки. В этом случае я выбираю ячейку F2.

2. Затем введите в него следующую формулу.

=HYPERLINK(«mailto:»&B2)

Внимание: Если вы нажмете кнопку Enter ключ, будет создана гиперссылка, как показано на снимке экрана ниже. Когда вы нажмете на ссылку, будет создано электронное письмо Outlook, и адрес электронной почты получателя будет автоматически заполнен в поле «Кому».

Адрес электронной почты получателя теперь добавляется в формулу гиперссылки. Выполните следующие шаги, чтобы добавить строку темы, получателей копий и основной текст по мере необходимости.


1.1.1.2 Добавить получателей копии в формулу гиперссылки

Чтобы добавить получателей копий к функции гиперссылки, добавьте «?cc=» как часть формулы следующим образом.

«?cc=» & C2

где C2 содержит адрес электронной почты получателя копии.

Формула в ячейке F2 должна быть следующей:

=HYPERLINK(«mailto:» & B2 & «?cc=» & C2)


1.1.1.3 Добавить строку темы в формулу гиперссылки

Чтобы добавить строку темы к функции гиперссылки, добавьте «&тема=» как часть формулы следующим образом.

«&тема=»& D2

где C2 содержит тему электронной почты.

Формула в ячейке F2 теперь должна выглядеть следующим образом:

=HYPERLINK(«mailto:» & B2 & «?cc=» & C2 & «&subject=»& D2)


1.1.1.4 Добавление основного текста с разрывами строк в формулу гиперссылки

Последний шаг — добавить основной текст в формулу гиперссылки. Как вы можете видеть в примере, две строки текста в E2 разделены разрывом строки, и вы хотите сохранить разрыв строки в теле письма. Распознает ли Outlook разрыв строки в этом случае? Давайте проверим это.

Чтобы добавить основной текст в формулу гиперссылки, вам нужно добавить «&тело=» как часть формулы следующим образом.

«&тело=»& E2

где E2 содержит основной текст сообщения электронной почты.

Формула в ячейке F2 теперь отображается следующим образом:

=HYPERLINK(«mailto:» & B2 & «?cc=» & C2 & «&subject=»& D2 & «&body=»& E2)

Примечание: Если вы нажмете Enter ключ и нажмите на ссылку. Вы можете видеть в новом электронном письме, что содержимое в теле письма отображается в той же строке.

Чтобы отобразить тело электронной почты в отдельных строках, вам необходимо изменить содержимое ячейки, добавив код символа возврата каретки. % 0A к тексту, где нужно вставить разрыв строки. Смотрите скриншот:


1.1.1.5 Укажите текст для отображения гиперссылки

На предыдущих шагах мы завершили аргумент Link_location с полями электронной почты. Здесь, в этом разделе, мы собираемся закончить следующий аргумент [friendly_name].

В этом случае я хочу, чтобы ячейка гиперссылки отображала текст как «Электронная почта для хх”, где xx — имя получателя в формате A2. Таким образом, формулу в F2 следует изменить на:

=HYPERLINK(«mailto:» & B2 & «?cc=» & C2 & «&subject=»& D2 & «&body=»& E2, «Email to «&A2)

Нажмите Enter ключ для получения результата.

Выберите эту ячейку формулы и перетащите ее Ручка автозаполнения вниз, чтобы создать другие гиперссылки электронной почты. Смотрите скриншот:


1.1.2 Отправка электронной почты из Excel с помощью функции гиперссылки

За исключением использования приведенной выше формулы гиперссылки, вы можете вручную создать гиперссылку электронной почты с Вставить Гиперссылка функция в Экселе. Этот раздел покажет вам шаги.

1. Щелкните правой кнопкой мыши письмо, в которое вы хотите вставить гиперссылку, выберите Ссылка из контекстного меню.

2. Во всплывающем Вставить гиперссылку диалоговое окно необходимо настроить следующим образом.

2.1) Выбрать лектронная почта в левой панели.

2.2). Текст для отображения текстовое поле, введите текст, который вы хотите отобразить в ячейке;

Tips: вы не можете использовать ссылки на ячейки в этом диалоговом окне, поэтому вы должны ввести поля электронной почты вручную, как показано ниже.

2.3). Адрес электронной почты текстовое поле, вам нужно ввести следующие адреса электронной почты.

mailto: адрес электронной почты

Пожалуйста, замените текст «адрес электронной почты” с вашим реальным адресом электронной почты. Если у вас несколько адресов электронной почты, разделите их точкой с запятой.

2.4). Тема текстовое поле, вы можете указать тему и тело письма прямо здесь. Пожалуйста, настройте следующим образом:

Email subject&body=Тело письма

В этом случае я набираю Ежемесячная продажа&body=Привет,%0AEписьмо получено.

> где предметом Ежемесячная распродажа;

и

> тело письма:

Здравствуйте,

Электронная почта получена. (% 0A это код символа возврата каретки, который может быть распознан Outlook)

2.5) Нажмите OK кнопку для сохранения гиперссылки. Смотрите скриншот:

При нажатии на гиперссылку будет создано электронное письмо Outlook с указанными полями «Кому», «Тема» и «Тело», как показано на снимке экрана ниже.

Заметки:

1) С помощью этого метода вам приходилось создавать каждую гиперссылку электронной почты вручную.

2) Вы не можете добавить поле «Копия» в электронные письма с помощью этого метода. Итак, если вам нужно поле «Копия», добавьте его из нового открывающегося окна электронной почты.


1.2 Отправка электронной почты нескольким получателям в ячейках с помощью сценария VBA

В приведенном выше примере вы можете видеть, что в ячейке отображается несколько адресов электронной почты, разделенных точкой с запятой. Если у вас есть список адресов электронной почты, как показано на снимке экрана ниже, и вы хотите отправить электронное письмо или независимое электронное письмо всем им, следующий код VBA может оказать вам услугу.


1.2.1 Отправить электронное письмо нескольким получателям в ячейках с помощью сценария VBA

1. На листе, который содержит все адреса электронной почты, на которые вы хотите отправить электронное письмо. нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модуль, а затем вставьте следующий код в Модуль (код) окно.

Код VBA: отправить электронное письмо на список адресов электронной почты

Sub sendmultiple()
'updateby Extendoffice 20220802
    Dim xOTApp As Object
    Dim xMItem As Object
    Dim xCell As Range
    Dim xRg As Range
    Dim xEmailAddr As String
    Dim xTxt As String
    On Error Resume Next
    xTxt = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    Set xOTApp = CreateObject("Outlook.Application")
    For Each xCell In xRg
        If xCell.Value Like "*@*" Then
            If xEmailAddr = "" Then
                xEmailAddr = xCell.Value
            Else
                xEmailAddr = xEmailAddr & ";" & xCell.Value
            End If
        End If
    Next
    Set xMItem = xOTApp.CreateItem(0)
    With xMItem
        .To = xEmailAddr
        .Subject = "Test"
        .Body = "Dear " _
                & vbNewLine & vbNewLine & _
                "This is a test email " & _
                "sending in Excel"
        .Display
    End With
End Sub

3. нажмите F5 ключ для запуска кода и Kutools for Excel всплывает диалоговое окно. Выберите список адресов электронной почты и нажмите OK.

Ноты:

1) Если вы не хотите, чтобы отображалось диалоговое окно, указанное выше, и хотите напрямую указать диапазон адресов электронной почты в коде, замените эту строку:

Установите xRg = Application.InputBox(«Пожалуйста, выберите список адресов:», «Kutools for Excel», xTxt, , , , , 8)

с

Установить xRg = диапазон («A2: A7»)

2) Вы можете указать свою тему и тело письма в следующих строках:

.Тема = «Тест»

.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"

3) Чтобы напрямую отправить электронное письмо, не открывая следующее окно нового сообщения, вам необходимо заменить эту строку:

.Отображать

с

.Послать

После запуска кода все адреса электронной почты в выбранном диапазоне отображаются в поле «Кому» окна сообщения. Смотрите скриншот:


1.2.2 Отдельно отправлять электронные письма каждому получателю, указанному в ячейках, с помощью сценария VBA

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

1. На листе, который содержит все адреса электронной почты, на которые вы хотите отправлять электронные письма. нажмите другой + F11 ключи к откройте окно Microsoft Visual Basic для приложений.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули, а затем вставьте следующий код в окно модуля (код).

Код VBA: отправлять электронные письма на каждый адрес электронной почты, указанный в ячейках отдельно

Sub SendEmailToAddressInCells()
'Updated by Extendoffice 20220802
    Dim xRg As Range
    Dim xRgEach As Range
    Dim xRgVal As String
    Dim xAddress As String
    Dim xOutApp As Outlook.Application
    Dim xMailOut As Outlook.MailItem
    On Error Resume Next
    xAddress = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select the addresses list", "KuTools For Excel", xAddress, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xRg = xRg.SpecialCells(xlCellTypeConstants, xlTextValues)
    For Each xRgEach In xRg
        xRgVal = xRgEach.Value
        If xRgVal Like "?*@?*.?*" Then
            Set xMailOut = xOutApp.CreateItem(olMailItem)
            With xMailOut
                .To = xRgVal
                .Subject = "Test"
                .Body = "Dear " _
                      & vbNewLine & vbNewLine & _
                        "This is a test email " & _
                        "sending in Excel"
                .Display
                '.Send
            End With
        End If
    Next
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

3. Затем нажмите Tools
> Рекомендации. В разделе Ссылки — VBAProject диалоговое окно, найдите и отметьте Библиотека объектов Microsoft Outlook 16.0 и нажмите OK чтобы сохранить изменения.

4. нажмите F5 ключ для запуска кода и Kutools for Excel всплывает диалоговое окно. Выберите список адресов электронной почты и нажмите ОК.

Ноты:

1) Если вы не хотите, чтобы отображалось диалоговое окно, указанное выше, и хотите напрямую указать диапазон адресов электронной почты в коде, замените эту строку:

Установите xRg = Application.InputBox(«Пожалуйста, выберите список адресов:», «Kutools for Excel», xTxt, , , , , 8)

с

Установить xRg = диапазон («A2: A7»)

2) Вы можете указать свою тему и тело письма в следующих строках:

.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"

3) Чтобы напрямую отправить электронное письмо, не открывая следующие окна сообщений, вам необходимо заменить эту строку:

.Отображать

с

.Послать

В этом примере в выбранном диапазоне шесть адресов электронной почты, поэтому автоматически будет создано шесть окон сообщений Outlook с отдельным адресом электронной почты, указанным в поле «Кому», как показано на снимке экрана ниже.

5. Наконец, нажмите Отправить кнопку, чтобы отправить письмо по одному.


2. Вставьте вложения или подпись Outlook в электронные письма, отправленные из Excel (с помощью сценариев VBA).

В этом разделе показано, как вставлять вложения или подпись Outlook по умолчанию в электронные письма, отправляемые из Excel.

2.1 Вставляйте вложения в электронные письма, отправленные из Excel

Здесь мы описываем различные случаи вставки вложений, и вы можете выбрать метод в соответствии с вашими потребностями. В этом разделе вы можете научиться (щелкните любую из следующих ссылок, чтобы перейти к соответствующему методу):


2.1.1 Отправить по электронной почте определенный файл в качестве вложения

Вы можете применить следующий код VBA для отправки по электронной почте одного или нескольких файлов в папке в виде вложений из Excel.

1. нажмите другой + F11 ключи.

2. В дебюте Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули. Затем вставьте следующий код VBA в окно модуля (код).

Код VBA: файлы электронной почты в папке в виде вложений из Excel

Sub EmailWithAttachments()
'Updated by Extendoffice 20220802
    Dim xStrFile As String
    Dim xFilePath As String
    Dim xFileDlg As FileDialog
    Dim xFileDlgItem As Variant
    Dim xOutApp As Outlook.Application
    Dim xMailOut As Outlook.MailItem
    Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    Set xFileDlg = Application.FileDialog(msoFileDialogFilePicker)
    If xFileDlg.Show = -1 Then
        With xMailOut
            .BodyFormat = olFormatRichText
            .To = "xxx@aaa.com"
            .Subject = "test"
            .HTMLBody = "test"
            For Each xFileDlgItem In xFileDlg.SelectedItems
                .Attachments.Add xFileDlgItem
            Next xFileDlgItem
            .Display
        End With
    End If
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

Заметки:

1) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с адресом электронной почты вашего собственного получателя;

2) Изменить тему письма и тело письма отдельно в строке .Subject = «тест» и .HTMLBody = «тест»;

3) Вы можете добавить получателей копии и скрытой копии по мере необходимости. Просто добавьте следующие две строки ниже строки .Кому = xxx@aaa.com.

.CC = «адрес электронной почты»

.BCC = «адрес электронной почты»

3. Затем нажмите Tools
> Рекомендации. В разделе Ссылки — VBAProject диалоговое окно, найдите и отметьте Библиотека объектов Microsoft Outlook 16.0 и нажмите OK чтобы сохранить изменения.

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

Затем всплывает окно сообщения. Вы можете видеть, что выбранные файлы отображаются в виде вложений в поле «Прикрепленные».


2.1.2 Отправьте текущий рабочий лист по электронной почте в виде вложения

Если вы хотите отправить текущий рабочий лист по электронной почте в виде вложения из Excel, вы можете применить сценарий VBA в этом разделе.

1. нажмите другой + F11 ключи.

2. В дебюте Microsoft Visual Basic для приложений окна, нажмите вставить > Модули. Затем вставьте следующий код VBA в Модуль (код) окно.

Код VBA: отправьте текущий рабочий лист по электронной почте в виде вложения

Sub SendWorkSheet()
'Update by Extendoffice 20220802
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & ""
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte features"
    .Body = "Please check and read this document."
    .Attachments.Add Wb2.FullName
    .Display
    '.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub

Ноты:

1) В линейке.Кому = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

2) Изменить тему письма и тело письма отдельно в строке .Subject = «особенности kte» и .Body = «Пожалуйста, проверьте и прочитайте этот документ.»;

3) В следующих двух строках:

.CC = «адрес электронной почты»

.BCC = «адрес электронной почты»

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

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф  перед каждой строкой.

3. нажмите F5 для запуска кода, то текущий рабочий лист сохраняется как рабочая книга Excel и автоматически вставляется в окно сообщения в виде вложения. Смотрите скриншот:

Примечание: Прикрепленная рабочая книга, содержащая только текущий рабочий лист, имеет то же имя, что и исходная рабочая книга. И время запуска кода также добавляется к имени книги.


2.1.3 Отправить текущую книгу по электронной почте в виде вложения

Изучив код VBA для отправки по электронной почте текущей рабочей таблицы в виде вложения из Excel, здесь мы предоставляем еще один сценарий VBA, который поможет вам отправить по электронной почте всю книгу в виде вложения. Пожалуйста, сделайте следующее.

1. нажмите другой + F11 ключи.

2. В дебюте Microsoft Visual Basic для приложений окна, нажмите Вставить > Модуль. Затем вставьте следующий код VBA в окно модуля (код).

Код VBA: отправьте текущую книгу по электронной почте в виде вложения из Excel

Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

Ноты:

1) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

2) Изменить тему письма и тело письма отдельно в строке .Subject = «особенности kte» и .Body = «Пожалуйста, проверьте и прочитайте этот документ.»;

3) В следующих двух строках:

.CC = «адрес электронной почты»

.BCC = «адрес электронной почты»

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

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

3. нажмите F5 ключ для запуска кода, то текущая книга автоматически вставляется в окно сообщения в качестве вложения. Смотрите скриншот:


2.1.4 Электронная почта всей книги в виде вложения PDF

Большинство людей склонны сохранять книгу Excel в виде файла PDF, а затем отправлять ее другим в виде вложения. В этом разделе я покажу вам способ отправки электронных писем непосредственно из Excel с текущей открытой книгой в виде вложения PDF без необходимости вручную сохранять книгу в виде файла PDF.

1. нажмите другой + F11 ключи.

2. В дебюте Microsoft Visual Basic для приложений окна, нажмите Вставить > Модуль. Затем вставьте следующий код VBA в окно модуля (код).

Код VBA: отправьте всю книгу по электронной почте в виде вложения PDF

Sub SendWorkBookAsPDF()
'Update 20220803
Dim Wb As Workbook
Dim FilePath As String
Dim FileName As String
Dim xOutApp As Object
Dim xOutMail As Object
On Error Resume Next

Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"
FilePath = Environ$("temp") & "" & FileName

Wb.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
    FilePath, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False

Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
With xOutMail
       .To = "xxx@aaa.com"
       .CC = "Email Address"
       .BCC = "Email Address"
       .Subject = "test"
       .Body = "test"
       .Attachments.Add FilePath
       .Display   'or use .Send
   End With
Kill FilePath
Set xOutMail = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub

Ноты:

1) В строке .To = xxx@aaa.com, замените xxx@aaa.com реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

2) Изменить тему письма и тело письма отдельно в строке .Subject = «тест» и .Body = «тест»;

3) В следующих двух строках:

.CC = «Адрес электронной почты»

.BCC = «Адрес электронной почты»

Если вы хотите добавить получателей копии и скрытой копии, замените текст «Ваш e-mail» в строках с нужными вам адресами электронной почты.

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

4) Имя файла PDF будет таким же, как имя исходной книги. И время запуска кода также будет добавлено к имени книги. Если вам не нужно добавлять метку времени к имени файла, удалите & Формат (Теперь «дд-ммм-гг ч-мм-сс») со следующей строки.

FileName = Left(Wb.Name, (InStrRev(Wb.Name, «.», -1, vbTextCompare) — 1)) & Format(Now, «dd-mmm-yy h-mm-ss») & «.pdf «

3. нажмите F5 ключ для запуска кода. Затем текущая книга автоматически вставляется в новое окно сообщения в виде вложенного файла PDF. Смотрите скриншот:


2.1.5 Отправьте текущий рабочий лист по электронной почте в виде вложения PDF

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

1. нажмите другой + F11 ключи.

2. В дебюте Microsoft Visual Basic для приложений окна, нажмите вставить > Модуль. Затем вставьте следующий код VBA в окно модуля (код).

Код VBA: отправьте текущий рабочий лист по электронной почте в виде вложения PDF

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .Body = "test"
    .Attachments.Add FileName
    .Display
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

Ноты:

1) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

2) Изменить тему письма и тело письма отдельно в строке .Subject = «тест» и .Body = «тест»;

3) В следующих двух строках:

.CC = «Адрес электронной почты»

.BCC = «Адрес электронной почты»

Если вы хотите добавить получателей копии и скрытой копии, замените текст «Ваш e-mail» в строках с нужными вам адресами электронной почты.

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

4) Имя файла PDF будет: имя исходной книги_имя исходного листа. В этом случае имя файла PDF будет Ежемесячный отчет о продажах_продажи.

3. нажмите F5 ключ для запуска кода. Затем текущий рабочий лист автоматически вставляется в новое окно сообщения в виде вложения файла PDF. Смотрите скриншот:


2.2 Вставьте подпись Outlook в электронные письма, отправленные из Excel

Возьмем приведенный выше случай в качестве примера: вы применяете приведенный выше код VBA для отправки текущего рабочего листа в виде вложения PDF-файла из Excel, но подпись Outlook не может быть добавлена ​​в окно сообщения. Чтобы сохранить подпись Outlook по умолчанию в электронном письме, отправленном из Excel, поможет следующий метод.

Два кода VBA перечислены ниже.

Код VBA 1: код помогает сохранить подпись Outlook.

Код VBA 2: код помогает отправить текущий рабочий лист по электронной почте в виде вложения PDF.

Код VBA 1: сохранить подпись Outlook

.HTMLBody = "Email body" & "
" & .HTMLBody

Код VBA 2: отправить текущий рабочий лист по электронной почте в виде вложения PDF

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .Body = "test"
    .Attachments.Add FileName
    .Display
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

1. Обычно вам нужно нажать кнопку другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули. Затем вставьте указанный выше код VBA 2 в окно «Модуль (код)».

3. Чтобы сохранить подпись Outlook по умолчанию в электронном письме, отправленном из Excel, вам необходимо изменить код VBA 2 следующим образом:

1) Заменить .Тело линия с Код VBA 1;

2) Переместить линию .Отображать под линией С OutlookMail (или с xMailOut в других кодах). Смотрите скриншот:

Вот полный код после модификации.

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .Display
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .HTMLBody = "Email body" & "
" & .HTMLBody .Attachments.Add FileName '.Send End With Kill FileName Set OutlookMail = Nothing Set OutlookApp = Nothing End Sub

4. нажмите F5 ключ для запуска кода. Затем вы получите новое окно сообщения с текущим рабочим листом, прикрепленным в виде файла PDF, а подпись Outlook по умолчанию будет автоматически вставлена ​​в конец тела электронной почты.


3. Автоматически отправлять электронные письма из Excel при выполнении условия (с помощью сценариев VBA)

В приведенных выше примерах вам нужно запустить код вручную, чтобы добиться доставки электронной почты. Если вы хотите активировать код автоматически при выполнении определенного условия, например, когда ячейка достигает определенного значения, когда значение ячейки изменяется, когда достигается дата и т. д., электронное письмо будет отправлено автоматически. В этом разделе перечислены условия, которые пользователи Excel часто искали в Google, чтобы помочь вам автоматически отправлять электронные письма из Excel при выполнении определенного условия.

3.1 Автоматически отправлять электронное письмо, когда ячейка достигает определенного значения

Как показано на снимке экрана ниже, предположим, что у вас есть таблица продаж с ячейкой D6, содержащей общую сумму продаж. Вы хотите автоматически отправлять электронное письмо своему начальнику на основе общего объема продаж, например, создать или отправить электронное письмо автоматически, когда общий объем продаж превышает 10000 10000, но если общий объем продаж равен или меньше XNUMX XNUMX, никаких действий не предпринимается.

1. На рабочем листе содержится таблица продаж, щелкните правой кнопкой мыши вкладку листа и выберите Посмотреть код из контекстного меню.

2. В дебюте Microsoft Visual Basic для приложений окно, вставьте следующий код VBA в Лист (Код) окно.

Код VBA: автоматически отправлять электронное письмо, когда ячейка достигает определенного значения в Excel

Dim xRg As Range
'Update by Extendoffice 20200803
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("D6"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10000 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
On Error Resume Next
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub

Private Sub Worksheet_Calculate()
Dim xI As Integer
Dim xRg As Range
Set xRg = Range("D6")
On Error GoTo Err01
xI = Int(xRg.Value)
If xI > 10000 Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub

Заметки:

1) D6 это ячейка, значение которой вы будете отправлять по электронной почте на основе.

2) > 10000 это условие, которое означает, что электронное письмо будет отправлено, когда значение в D6 больше 10000.

3) Диапазон («D6») в следующей строке означает, что тело электронной почты будет ссылаться на значение в D6.

xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")

4) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

5) Изменить тему письма в строке .Subject = «тест».

6) В следующих двух строках:

.CC = «Адрес электронной почты»

.СК = «Адрес электронной почты»

Если вы хотите добавить получателей копии и скрытой копии, замените текст «Ваш e-mail» в строках с нужными вам адресами электронной почты.

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

С этого момента, когда значение в ячейке D6 превысит 10000, будет создано электронное письмо, как показано на снимке экрана ниже.


3.2 Автоматически отправлять электронное письмо при изменении значения ячейки

Как показано на снимке экрана ниже, предположим, что вы получили книгу, содержащую ежемесячные продажи на разных листах и ​​общую сумму продаж на листе. Вам необходимо проверить общий объем продаж и, если общий объем продаж изменен, отправить книгу обратно отправителю и сообщить отправителю, что ячейка была изменена.

1. На рабочем листе содержится таблица продаж, щелкните правой кнопкой мыши вкладку листа и выберите Посмотреть код из контекстного меню.

2. В дебюте Microsoft Visual Basic для приложений вставьте следующий код VBA в окно Sheet (Code).

Код VBA: автоматически отправлять электронное письмо при изменении указанного значения ячейки

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220803
Dim xRgSel As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = False
Set xRg = Range("B14")

Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
Set xRgSel = xItsRG
xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
Set xRgSel = xDDs
xBoolean = True
ElseIf Not (xDs Is Nothing) Then
Set xRgSel = xDs
xBoolean = True
End If

ActiveWorkbook.Save
If xBoolean Then
Debug.Print xRgSel.Address

Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xMailBody = "The cell " & xRgSel.Address(False, False) & _
" in the worksheet '" & Me.Name & "' were modified on " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("username") & "."

With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Worksheet modified"
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Display
End With
Set xRgSel = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Заметки: В коде

1) B14 в коде означает, что при изменении значения ячейки B14 вы отправите электронное письмо.

2) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

3) Изменить тему письма в строке .Subject = «Рабочий лист изменен».

4) В следующих двух строках:

.CC = «Адрес электронной почты»

.BCC = «Адрес электронной почты»

Если вы хотите добавить получателей копии и скрытой копии, замените текст «Ваш e-mail» в строках с нужными вам адресами электронной почты.

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

Отныне при изменении значения в ячейке B14 сообщение Outlook будет создаваться автоматически, как показано на снимке экрана ниже.


3.3 Автоматически отправлять электронное письмо при сохранении книги

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

1. нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. В этом окне дважды щелкните Эта рабочая тетрадь в Проекты под застройку панели, затем вставьте следующий код VBA в ThisWorkbook (Код) окно.

Код VBA: автоматически отправлять электронное письмо при сохранении книги

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220804
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xName As String
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailItem = xOutApp.CreateItem(0)
    xName = ActiveWorkbook.FullName
    With xMailItem
        .To = "xxx@aaa.com"
        .CC = "Email address"
        .BCC = "Email address"
        .Subject = "The workbook has been updated"
        .Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
        .Attachments.Add xName
        .Display
       '.send
    End With
    Set xMailItem = Nothing
    Set xOutApp = Nothing
End Sub

Заметки: В коде

1) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

2) Изменить тему и тело письма отдельно в строках .Subject = «Книга обновлена» и .Body = «Привет,» & Chr(13) & Chr(13) & «Файл обновлен»..

3) В следующих двух строках:

.CC = «Адрес электронной почты»

.BCC = «Адрес электронной почты»

Если вы хотите добавить получателей копии и скрытой копии, замените текст «Ваш e-mail» в строках с нужными вам адресами электронной почты.

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

3. Отныне при сохранении книги нажатием кнопки Ctrl + S клавиши или нажав кнопку Сохраните кнопка, электронная почта Outlook будет создана автоматически. Вы можете видеть, что текущая рабочая книга прикреплена как вложение, а поля заполнены указанным содержимым. Смотрите скриншот:

Tips: Если вы часто используете эту книгу, здесь рекомендуется сохранить книгу как Excel Macro-Enabled Workbook чтобы сохранить сценарий VBA для использования в будущем. Шаги следующие.

1) Нажмите Файл > Сохранить как, а затем выберите папку для сохранения файла.

2). Сохранить как диалоговое окно, переименуйте файл, как вам нужно в Имя файла текстовое поле, выберите Excel Macro-Enabled Workbook в Сохранить как раскрывающийся список и, наконец, щелкните Сохраните кнопка. Смотрите скриншот:


3.4 Автоматически отправлять электронное письмо в определенное время

Допустим, вам нужно отправить кому-то электронное письмо с рабочей тетрадью назначения задач. каждую пятницу в 9 утраи хотите сделать это автоматически в Excel без необходимости вручную управлять почтовым клиентом. Этот раздел покажет вам, как это сделать.

1. нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модуль. Затем вставьте следующий код VBA в окно модуля.

VBA code1: отправить текущую книгу по электронной почте в виде вложения из Excel

Sub Timer()
    If Weekday(Date) = vbFriday Then
        SendWorkBook
        Application.OnTime TimeValue("09:00:00"), "Timer"
    Else
        Application.OnTime TimeValue("09:00:00"), "Timer"
    End If
End Sub

Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

3. В этом окне дважды щелкните Эта рабочая тетрадь в Проекты под застройку панели, затем вставьте следующий код VBA в ThisWorkbook (Код) окно.

Код VBA 2: автоматически отправлять электронное письмо в определенное время

Private Sub Workbook_Open()
    Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub

Заметки:

1) В коде VBA 1, пятница в следующей строке означает, что письмо будет отправляться автоматически каждую пятницу;

Если День(Дата) = vbFriday Тогда

2) В коде VBA 1 и коде VBA 2 время 09: 00: 00 означает, что письмо будет отправлено в 9 утра в определенный день.

Вы можете изменить день и время, как вам нужно.

3) Когда код запустится, будет создано электронное письмо. Если вы не хотите, чтобы всплывающее окно сообщения было отправлено напрямую, удалите строку .Отображать из кода VBA 1 и удалите апостроф перед линией ‘.Отправлять.

4. Сохраните коды, а затем сохраните книгу как книгу Excel с поддержкой макросов следующим образом.

4.1) Нажмите Файл > Сохранить как, а затем выберите папку для сохранения файла.

4.2). Сохранить как диалоговое окно, переименуйте файл, как вам нужно в Имя файла текстовое поле, выберите Excel Macro-Enabled Workbook в Сохранить как раскрывающийся список и, наконец, щелкните Сохраните кнопка. Смотрите скриншот:

5. Откройте сохраненную книгу с поддержкой макросов, после чего электронное письмо будет создано или отправлено автоматически, когда наступит день и время.


4. Дополнительные темы

В этом разделе собраны другие темы, с которыми вы можете столкнуться при отправке электронных писем из Excel.

4.1 Электронная почта диапазона ячеек из Excel (с помощью скрипта VBA)

Предположим, что на листе Excel есть ежемесячная таблица продаж, как показано на снимке экрана ниже, и вам нужно отправить эту ежемесячную таблицу продаж другим пользователям в виде содержимого электронного письма или непосредственно в виде вложения. Здесь мы предлагаем вам два способа сделать это.

4.1.1 Электронная почта диапазона как часть основного содержимого из Excel

Вы можете запустить следующий код VBA, чтобы отправить диапазон ячеек как часть содержимого тела электронной почты из Excel.

1. нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Tools
> Рекомендации. А затем проверьте Библиотека объектов Microsoft Outlook 16.0 поле и нажмите OK в Ссылки — VBAProject диалоговое окно.

3. Нажмите Вставить > Модули, затем вставьте следующий код VBA в Модуль (код) окно.

Код VBA: отправьте диапазон ячеек как часть содержимого тела электронной почты из Excel.

Sub SendARangeofCells()
'Updated by Extendoffice 20220809
    Dim xRg As Range
    Dim I, J As Long
    Dim xAddress As String
    Dim xMailOut As Object
    Dim xOutApp As Object
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    xAddress = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    With xMailOut
        .Subject = "test"
        .To = "xxx@aaa.com"
        .CC = "Email address"
        .BCC = "Email address"
        .HTMLBody = RangetoHTML(xRg)
        .Display
        '.Send
    End With
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

 ' The following VBA script is cited from this page:
 ' https://stackoverflow.com/questions/18663127/paste-excel-range-in-outlook
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook

    TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

    'Copy the range and create a new workbook to past the data in
    rng.Copy
    Set TempWB = Workbooks.Add(1)
    With TempWB.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial xlPasteValues, , False, False
        .Cells(1).PasteSpecial xlPasteFormats, , False, False
        .Cells(1).Select
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With

    'Publish the sheet to a htm file
    With TempWB.PublishObjects.Add( _
         SourceType:=xlSourceRange, _
         Filename:=TempFile, _
         Sheet:=TempWB.Sheets(1).Name, _
         Source:=TempWB.Sheets(1).UsedRange.Address, _
         HtmlType:=xlHtmlStatic)
        .Publish (True)
    End With

    'Read all data from the htm file into RangetoHTML
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    RangetoHTML = ts.ReadAll
    ts.Close
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                          "align=left x:publishsource=")

    'Close TempWB
    TempWB.Close savechanges:=False

    'Delete the htm file we used in this function
    Kill TempFile

    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
End Function

Заметки: В коде

1) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

2) В следующих двух строках:

.CC = «Адрес электронной почты»

.BCC = «Адрес электронной почты»

Если вы хотите добавить получателей копии и скрытой копии, замените текст «Ваш e-mail» в строках с нужными вам адресами электронной почты.

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

4. нажмите F5 ключ для запуска кода. Во всплывающем окне Kutools for Excel диалоговое окно, выберите диапазон ячеек, которые необходимо отправить как часть содержимого сообщения электронной почты, затем щелкните OK. Смотрите скриншот:

Затем электронная почта Outlook будет создана автоматически. Вы можете видеть, что диапазон, выбранный вами на листе, вставлен в тело электронной почты. Смотрите скриншот:


4.1.2 Электронная почта диапазона в виде вложения из Excel

Если вам нужно отправить по электронной почте диапазон ячеек на листе в виде вложения из Excel. Вы можете попробовать следующий код VBA.

1. нажмите другой + F11 ключи.

2. В дебюте Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули. Затем вставьте следующий код VBA в Модуль (код) окно.

Код VBA: диапазон по электронной почте в виде вложения из Excel

Sub SendRange()
'Update 20220809
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & ""
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email address"
    .BCC = "Email address"
    .Subject = "Monthly sales for 2021"
    .Body = "Hello, please check and read this document. "
    .Attachments.Add Wb2.FullName
    .Display
    '.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Заметки:

1) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

2) Изменить тему письма и тело письма отдельно в строке .Subject = «Ежемесячные продажи на 2021 год» и .Body = «Здравствуйте, проверьте и прочитайте этот документ.»;

3) В следующих двух строках:

.CC = «адрес электронной почты»

.BCC = «адрес электронной почты»

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

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

3. нажмите F5 ключ для запуска кода. Во всплывающем окне Kutools for Excel диалоговое окно, выберите диапазон ячеек, который необходимо отправить в качестве вложения в сообщение электронной почты, затем щелкните OK. Смотрите скриншот:

Затем электронная почта Outlook будет создана автоматически. И диапазон ячеек, выбранных вами на листе, сохраняется как книга Excel и прикрепляется к окну сообщения. Смотрите скриншот:


4.2 Отправка электронных писем при нажатии кнопки в Excel

Если вам нужно щелкнуть командную кнопку, чтобы вызвать макрос для отправки электронной почты из Excel, например, отправьте текущую книгу в качестве вложения другим, нажав командную кнопку на рабочем листе. Вы можете выполнить следующие шаги, чтобы сделать это.

1. Нажмите Застройщик > Вставить > Командная кнопка (элемент управления ActiveX). Затем нарисуйте командную кнопку на листе.

Tips: если у вас уже есть командная кнопка, пропустите этот шаг.

2. нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно. В окне нажмите Вставить > Модуль, затем вставьте код VBA (код, используемый для отправки текущей книги по электронной почте в виде вложения из Excel) в окно модуля (код).

Нажмите сюда чтобы получить код.

Внимание: здесь имя макроса, созданного на шаге 2, ОтправитьКнигу.

3. нажмите другой + Q ключи, чтобы закрыть Microsoft Visual Basic для приложений окно.

4. Теперь нужно назначить макрос на командную кнопку. Щелкните правой кнопкой мыши командную кнопку, выберите Просмотреть код из контекстного меню.

5. Затем Microsoft Visual Basic для приложений всплывающее окно, вы можете увидеть следующие две строки, перечисленные в Лист (Код) окно.

Private Sub CommandButton1_Click()
End Sub

6. Введите имя существующего макроса внутри подпроцедуры для командной кнопки.

7. нажмите другой + Q ключи, чтобы закрыть Редактор Visual Basicи нажмите Застройщик > Режим проектирования чтобы выключить режим дизайна.

Теперь вы можете нажать кнопку команды, чтобы отправить электронное письмо с текущей книгой в качестве вложения в электронное письмо.


4.3 Отправка писем с указанной учетной записи электронной почты

Обычно при запуске электронной почты из Excel с кодом VBA учетная запись электронной почты отправителя является учетной записью по умолчанию в Outlook. Предположим, вы настроили несколько учетных записей электронной почты в своем Outlook и хотите использовать определенную учетную запись для отправки электронных писем из Excel вместо использования учетной записи по умолчанию. Следующий код VBA может помочь.

В этом случае необходимы следующие коды.

Код VBA 1:

Dim OutlookMail As Outlook.MailItem

Код VBA 2:

For Each xAccount In OutlookApp.Session.Accounts
  If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next

Как использовать приведенный выше код VBA?

1) В собственном коде нужно заменить строку типа «Dim OutlookMail как объект” с кодом VBA 1;

2) Добавьте код VBA 2 под строкой «On Error Resume Next” в вашем коде. Затем укажите адрес электронной почты, который вы будете использовать для отправки электронной почты в коде VBA 2.

В этом примере мы собираемся указать определенную учетную запись электронной почты для отправки текущей книги в виде вложения из Excel. Пожалуйста, сделайте следующее.

1. нажмите другой + F11 ключи. в Microsoft Visual Basic для приложений окна, нажмите Tools
> Рекомендации. А затем проверьте Библиотека объектов Microsoft Outlook 16.0 поле и нажмите OK в Ссылки — VBAProject диалоговое окно.

2. Нажмите Вставить > Модули. Затем вставьте следующий код VBA в Модуль (код) окно.

Код VBA: отправить текущую книгу в виде вложения электронной почты из Excel через указанную учетную запись Outlook.

Sub SendWorkBook()
'Update by Extendoffice 20220809
Dim OutlookApp As Object
Dim OutlookMail As Outlook.MailItem 'important! Here can’t be declared as Object
Dim xAccount As Account
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(olMailItem)
On Error Resume Next
'The following lines helps to specify a certian email account
For Each xAccount In OutlookApp.Session.Accounts
  If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next
'End
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

3. нажмите F5 ключ для запуска кода. Затем появляется сообщение электронной почты Outlook, вы можете видеть, что от Поле заполняется учетной записью электронной почты, которую вы указали в коде.


4.4 Отправить электронное письмо, когда наступит дата

Если вам нужно отправить электронное письмо на основе определенной даты выполнения, например, как показано на снимке экрана ниже, есть таблица проекта, когда срок выполнения в диапазоне E2:E7 равен или меньше 7 дней от сегодняшнего дня (при условии, что текущая дата — 2022/8/4), руководителям соответствующих проектов будет автоматически отправлено электронное письмо с уведомлением о скором истечении срока действия проекта.

1. На рабочем листе содержится таблица проекта, щелкните правой кнопкой мыши вкладку листа и выберите Посмотреть код из контекстного меню.

2. В дебюте Microsoft Visual Basic для приложений окно, вставьте следующий код VBA в Лист (Код) окно.

Код VBA: автоматически отправлять электронное письмо при наступлении срока

Public Sub SendMailDueDate()
'Updated by Extendoffice 20220804
Dim xRgDate As Range
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xLastRow As Long
Dim vbCrLf As String
Dim xMailBody As String
Dim xRgDateVal As String
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Set xRgDate = Range("E2:E7") 'Please reference the due date column range
If xRgDate Is Nothing Then Exit Sub
Set xRgSend = Range("C2:C7") 'Please reference the email addresses column range
If xRgSend Is Nothing Then Exit Sub
Set xRgText = Range("D2:D7") 'Please reference the remark column range (the remark used to notify project leaders of the expiration of the project)
If xRgText Is Nothing Then Exit Sub
xLastRow = xRgDate.Rows.Count
Set xRgDate = xRgDate(1)
Set xRgSend = xRgSend(1)
Set xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
For i = 1 To xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
If xRgDateVal <> "" Then
If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "

" xMailBody = "" xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf xMailBody = xMailBody & "Remark : " & xRgText.Offset(i - 1).Value & vbCrLf xMailBody = xMailBody & "" Set xMailItem = xOutApp.CreateItem(0) With xMailItem .Subject = xMailSubject .To = xRgSendVal .CC = "Email address" .BCC = "Email address" .HTMLBody = xMailBody .Display '.Send End With Set xMailItem = Nothing End If End If Next Set xOutApp = Nothing End Sub

Заметки: В коде

1) В следующих строках E2: E7 содержит сроки выполнения, на основе которых вы будете отправлять электронные письма. C2: C7 содержит адреса электронной почты, на которые вы будете отправлять электронные письма. А также D2: D7 содержит примечания, которые вы добавите в тело электронного письма, чтобы уведомить получателей о том, что срок действия проекта истекает. Вы можете изменить диапазоны по мере необходимости.

Установить xRgDate = диапазон («E2: E7»)

Установите xRgSend = Диапазон («C2: C7»)

Установите xRgText = Диапазон («D2: D7»)

2) Следующая строка означает, что срок выполнения должен быть больше 1 дня и равен или меньше 7 дней от сегодняшнего дня. Вы можете изменить его по мере необходимости.

Если CDate(xRgDateVal) — Дата <= 7 И CDate(xRgDateVal) — Дата > 0 Тогда

3) В строке .To = xxx@aaa.com, пожалуйста, замените xxx@aaa.com с реальным адресом электронной почты получателя. Если вам нужно несколько адресов электронной почты, разделите их точкой с запятой.

4) Изменить тему письма в строке .Subject = «Рабочий лист изменен».

5) В следующих двух строках:

.CC = «Адрес электронной почты»

.BCC = «Адрес электронной почты»

Если вы хотите добавить получателей копии и скрытой копии, замените текст «Ваш e-mail» в строках с нужными вам адресами электронной почты.

Если вам не нужны получатели копии и скрытой копии, просто добавьте апостроф перед каждой строкой.

3. нажмите F5 ключ для запуска кода. Затем, если срок действия соответствует условиям, будет создано соответствующее электронное письмо. В этом случае будут созданы два письма, как показано на скриншоте ниже.


5. Удобный инструмент, который поможет вам легко отправлять электронные письма из Excel.

Если вы новичок в VBA, описанные выше методы могут оказаться для вас непростыми. Здесь мы рекомендуем Kutools for ExcelАвтора Отправить письма функция, с помощью которой вы можете легко отправлять электронные письма из Excel всего несколькими щелчками мыши. Пожалуйста, сделайте следующее.

5.1 Легко создавайте список рассылки, включающий нужные поля электронной почты

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

1. Нажмите Кутулс Плюс > Создать список рассылки.

2. В дебюте Создать список рассылки окно необходимо настроить следующим образом.

2.1). Столбцы для списка рассылки раздел, отметьте нужные поля в письме;

2.2). Прикрепить файлы раздел, отметьте одно или несколько вложений, которые могут вам понадобиться;

2.3) Указать место для размещения списка рассылки;

2.4) Нажмите Создавай кнопка. Смотрите скриншот:

Затем создается образец таблицы списка рассылки, как показано на снимке экрана ниже.

3. Теперь вам нужно заменить исходные данные в образце своими полевыми данными.

Теперь вы создали таблицу списка рассылки. Пожалуйста, продолжайте применять Отправить письма возможность отправлять электронные письма из Excel на основе созданных вами полей.

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


5.2 Легко отправлять электронные письма, включая поля, которые вы создали в списке рассылки

После создания списка рассылки (нажмите, чтобы узнать как), который содержит поля, которые могут вам понадобиться в ваших электронных письмах, теперь вы можете отправлять электронные письма из Excel с этими полями.

1. Выберите весь список рассылки, нажмите Кутулс Плюс > Отправить письма.

2. в Отправить письма диалоговое окно, выполните следующую настройку.

2.1) Поля заполняются в диалоговое окно каждого поля автоматически полями, указанными вами в списке рассылки;

Tips: если вам не нужно определенное поле в данный момент, выберите пустой вариант в раскрывающемся списке.

2.2) Вставить заполнитель (необязательно): если вам нужно вставить переменную информацию в тело письма.

Например, вам может потребоваться отправить электронное письмо нескольким получателям с персонализированным именем для каждого из них, вам нужно поместить курсор в тело электронного письма, где вам нужно вставить заполнитель, выберите поле «Э: Имя” (или другое поле имени в списке рассылки), а затем нажмите кнопку Вставить Заполнитель кнопка;

Когда получатели получают электронное письмо, тело письма остается прежним, но имена уникальны для каждого.

2.3) Составьте тело письма по своему усмотрению;

2.4) Убедитесь, что Отправлять электронные письма через Outlook флажок установлен;

2.5) Нажмите Отправить кнопка. Смотрите скриншот:

3. Затем Kutools for Excel диалоговое окно всплывает, чтобы сообщить вам, сколько писем отправлено, нажмите OK кнопку, чтобы закрыть это диалоговое окно.

Tips: Вы можете перейти в Отправленные вещи папку в Outlook, чтобы проверить отправленные вами электронные письма.


5.3 Легко отправлять электронные письма с телом HTML (включая гиперссылку, изображение и т. д.)

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

После создание списка рассылки, который включает в себя поля электронной почты, которые вам нужны,

Когда вы настроить диалоговое окно отправки писем, вы можете сделать содержимое тела более насыщенным с помощью параметров на панели инструментов.

Смотрите скриншот ниже:


5.4 Простая вставка подписи Outlook по умолчанию при отправке электронных писем

В приведенном выше методе мы продемонстрировали код VBA, который поможет вам отправлять электронные письма с подписью Outlook по умолчанию. Здесь с функцией «Отправить электронные письма» вам просто нужно отметить параметр, после чего подпись Outlook по умолчанию будет вставлена ​​в электронные письма, отправленные вами из Excel.

После создание списка рассылки, который включает в себя поля электронной почты, которые вам нужны,

После появления настроить диалоговое окно отправки писем, вам нужно нажать Опции > Использовать настройки подписи Outlook.

Внимание: убедитесь, что перед параметром «Использовать настройки подписи Outlook» стоит галочка.

Когда получатели получают электронное письмо, они могут видеть подпись Outlook по умолчанию, отображаемую в конце тела электронного письма.


5.5 Легко отправлять электронные письма с указанной учетной записи электронной почты

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

После создание списка рассылки, который включает в себя поля электронной почты, которые вам нужны,

После появления настроить диалоговое окно отправки писем, вам нужно нажать Опции > Отправлено из, затем щелкните учетную запись электронной почты, с которой нужно отправлять электронные письма.

Внимание: после выбора учетной записи электронной почты перед ней будет отображаться галочка.

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

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.

В заключение, отправка электронных писем из Excel весьма полезна в нашей повседневной работе. В этой статье рассматриваются более подробные темы отправки электронных писем из Excel. Если есть другие темы или более простые решения, оставьте комментарий, чтобы сообщить мне об этом.


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Понравилась статья? Поделить с друзьями:
  • Растянуть формулу для всей строки excel
  • Рассчитываемые данные в excel это
  • Рассылки в программе microsoft word
  • Рассчитать фот в excel
  • Рассылки в word что это