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

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

Имеем таблицу в 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) и вы сможете их открыть и проверить перед отправкой.

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

 


Страницы: 1  2  
Давид
08.01.2013 01:27:16
Огромное спасибо за статью!!!
Перерыл весь интернет.
Чуть не скачал CRM систему.
Пошел просвещать окружающих :).
Оля
08.01.2013 01:27:58
супер!!!! просто нет слов как все оказывается просто можно сделать и всего за несколько минут.
Дмитрий
08.01.2013 01:28:58
Просто шикарная вещь! Надо было в ручную делать больше 100 направлений на едкомиссию. А тут всё так просто оказалось! Спасибо!.
Сергей
08.01.2013 01:29:34
А можно ли таким способом рассылать e-mail с вложенными файлами?
08.01.2013 01:34:36
Такое только макросом. Я для этого специальную функциюв надстройке PLEX делал как раз.
09.05.2023 15:54:40
Здравствуйте, Николай. Пытаюсь отправить письма при помощи Вашей рассылки. Текст письма берётся из ячейки. А как сделать так, чтобы текст был с разрывом строк, как в ячейке (там при помощи Alt+Enter)
Ольга
08.01.2013 01:31:31
С П А С И Б О Б О Л Ь Ш О Е !! Очень помогло, триста писем в ручную чуть не стала править(((
Наталья
08.01.2013 01:32:27
Здравствуйте! Спасибо, все очень доступно и понятно. Все получается при слиянии, когда на листе А4 находится один бланк, а что нужно сделать, если на формате А4 четыре одинаковых бланка и надо чтобы в каждом были разные адресаты и адреса..
08.01.2013 01:33:45
На первом шаге Мастера Слияния выберите вариант Наклейки (Labels). Дальше укажете их размер, настроите одну, а остальные - сами подтянутся.
Василий
08.01.2013 01:36:42
При слиянии данных Excel 2010 -> Word 2010 заметили такую очень неприятную особенность. В оригинальном документе стоит число в денежном формате $2,331.74 (в ячейке руками введено 2331.74)

При слиянии происходят 2 странные неприятности:

1) Неприятно: все числа превращаются из 2 чисда после запятой в 4 (т.е. вместо $12.35 Word печатает $12.3500)
2) Совсем плохо: Вместо $2,331.74 Word печатает $2,331.7399

Я понимаю, как справится с этим введя в Excel промежутчную ячейку =TEXT($X,"0.00") и экспортируя ее, но это же не решение для слияния больших таблиц с кучей колонок ...

В 2003 офисе все это работало без "плясок с бубном". Может кто-то знает, что делать в 2010? Может это баг и на нехо уже выпустили какой-то hotfix?.
Алексей
08.01.2013 01:37:43
По поводу форматов перенесенных дат, чисел - все делается проще:
1. В настройках ворда поставьте значение "Затенение полей" - "всегда" (при печати затенения не будет, но вы всегда с легкостью увидите все поля).
2. Нажимаете на поле с числом правой кнопкой мыши, выбираете "коды/значения полей". Теперь мы видим код поля.
3. Вставляем ключ формата. У нас поле изначально выглядит так { MERGEFIELD "Сумма"}, а значение так: 1000, допечатываем следующее: {MERGEFIELD "Сумма" \# "# ##0.00"}. Теперь значение имеет вид 1 000.00. Вот так!
\# "# ##0.00 - ключ формата числа. Его можно редактировать: например \# "# ##0.0000 - тогда будет 4 знака после запятой.
\@ "dd.MM.yyyy" - ключ даты.
Чтобы узнать другие форматы смотрим справку к Office 2010 "Вставка и форматирование кодов полей в приложении Word 2010".
13.08.2014 15:47:27
как корректно отобразить % ?
скажем в ячейке с форматом "Проценты" имеется значение 15%
код поля MERGFIELD отображает 0.15%
maseur
08.01.2013 01:38:54
ОООООгромное СПАСИБО за классную инструкцию.
А я, блин, полдня продолбался, так на все вопросы ответа и не получил, пока не дошел до этой страницы.
Когда "вырасту" напишу макрос типа "Поставить памятник". Вот в таких случаях и буду его запускать:).
28.02.2013 10:33:37
Спасибо.
Только не скачивается пример.
Исправьте пожалуйста.
03.03.2013 08:42:49
Подправил, спасибо!
12.03.2013 16:59:19
Добрый день!
Подскажите,пожалуйста, можно ли таким способом отправить письмо не одному адресату, а  поставить в копию еще одного человека (мне нужно сделать рассылку руководителям, а в копии должны стоять их ассистенты, разным руководителям отсылаются результаты по его департаменту)
спасибо!
13.03.2013 09:13:54
Я бы попробовал для начала добавить адреса ассистентов через точку с запятой в столбец с адресами эл.почты руководителей в исходной таблице.
16.03.2013 12:08:04
Николай, спасибо! Но мне нужно что б асистент стоял именно в копии, а нес строке адресата. А то руководитель может обидеться
16.03.2013 12:09:49
Боюсь, что стандартными средствами слияния этого не сделать - только макросом, например рассылкой из PLEX
19.08.2017 23:34:54
Попробовал отправлять этим способом, разделяя несколько адресов (введенных по типу name@mail.ru; name1@mail.ru) одного адресата точкой с запятой. Появляется сообщение, что "Outlook не может распознать адрес".
Может, подскажете еще какой-нибудь способ?
20.08.2017 10:39:24
А через запятую пробовали? В зависимости от региональных настроек может быть запятая либо точка с запятой.
21.08.2017 19:47:18
Николай, да, через запятую тоже пробовал. С пробелом после запятой и без пробела. Результат один - "Outlook не может распознать адрес".
22.08.2017 09:50:57
Тогда только макросом - рассылкой из PLEX, например, или еще каким-нибудь.
19.03.2013 12:38:02
Если необходимо сохранить созданные в результате слияния документы для дальнейшего использования или требуется внести ручную правку в некоторые из документов, то лучше использовать ссылку Изменить часть писем , которая выведет результаты слияния в отдельный файл
Николай, спасибо большое. Но я столкнулся вот с какой проблемой, когда делал договора. После слияния получается один файл. Данных бывает много, поэтому и договоров может быть много, а с учетом того, что каждый договор занимает 5 и более страниц, то в итоге мы получаем файл, в котором по 200-300 страниц. И задача простая, нужно разбить один файл на много файлов. Благодаря вашей надстройке это легко было бы сделать в Excel, но как это сделать в Worde ?!!
21.03.2013 14:01:45
Сохраняете созданный в результате слияния документ в формате docm. Жмете в нем ALT+F11, вставляете новый модуль через меню Insert - Module и копируете туда текст вот такого макроса:
Sub Split_document()
    Dim srcdoc As Document, newdoc As Document
    Dim i As Integer
    
    Set srcdoc = ActiveDocument
    For i = 1 To srcdoc.Sections.Count - 1
        srcdoc.Sections(i).Range.Copy
        Set newdoc = Documents.Add
        newdoc.Range.Paste
        newdoc.Sections(2).PageSetup.SectionStart = wdSectionContinuous
        newdoc.SaveAs srcdoc.Path & "\" & Left(srcdoc.Name, Len(srcdoc.Name) - 4) & _
            "_" & Format(i, "000") & ".docx"
        newdoc.Close
    Next
End Sub

Возвращаетесь в Word и запускаете созданный макрос через ALT+F8. Он сохраняет каждый договор как отдельный документ в ту же папку, где лежит исходный общий файл.
21.03.2013 14:45:06
Спасибо огромное!!!
02.11.2015 19:46:46
А можно тоже самое, но имя документа из блока адреса.
12.05.2016 15:51:09
Alexey, опишите, пожалуйста, как это сделать?
20.03.2013 14:49:01
Николай, Ваш сайт, как всегда, мегаполезный!
Подскажите: на 6м шаге появляется сообщение (маленькое окно "Проверка имен" с текстом: "Приложению Microsoft Office не удалось распознать имя "Получатель" - Выберите адрес - Варианты не найдены", и кнопки "Другие имена", "Создать контакт", "Отмена").
Получатель = имена получателей из файла Excel, поочерёдно это сообщение появляется для всех получателей.
Насколько я поняла, программа пытается найти этих получателей в Outlook.
Файл Excel со списком адресатов указывала, список оформлен правильно.
Пробовала сделать рассылку несколько раз - один и тот же результат.
21.03.2013 12:22:52
На шестом шаге в выпадающем списке Кому надо указать столбец с адресом электронной почты - Word не смог найти его сам, надо ему помочь.
26.03.2013 14:10:04
честное пионерское - я выбирала:)
В общем, получилось.
Ещё раз огромное спасибо Вам за просветительскую деятельность:)!

Ещё вопрос.
Я отправляю документ Word. Текст и изображения из этого документа встают в тело письма. Можно ли сделать так, чтобы этот документ отправлялся вложением, а в самом письме написать нужный текст?
21.03.2013 18:32:25
Подскажите пожалуйста после слияния полученные документы возможно отправить потом только через Outlook или возможно как-то отправлять через другие программы? В первую очередь интересует можно ли это осуществить если почта на Zimbra?
21.03.2013 19:06:22
Это же Office - только Oulook. Для рассылки через другие почтовые программы (Bat, Lotus Notes и т.д.) нужно писать собственную рассылку на макросах.
22.03.2013 16:09:13
Николай, здравствуйте!
Как можно организовать рассылку в самом Excel, без участия Word?
Например, есть типовой расчёт, который можно применить к нескольким адресам, оставив поля вычислений без изменения, а изменив только заглавие.
01.05.2013 00:42:49
Можно макросом. Или с помощью надстройки.
12.11.2013 06:08:19
только к моему сожалению этот макрос почему то работает только тогда, когда все строки с адресами эл.почты заполнены если есть пропуски (пустые места) он не работает((((
12.11.2013 08:34:30
Если не заполнено поле адреса, то куда слать?
12.11.2013 08:50:09
нашимая кнопочку ctrl - по идее должны выделяться необходимые ячейки с адресами эл. почты, ну не присвоена еще почта сотрудникам новые они, и в рассылке не участвуют а по алфавиту стоят и фильтрование тоже не помогает, пришлось перелопачивать список(((
12.11.2013 08:55:09
Стоп. Вы про макрос из примера или про надстройку?
12.11.2013 11:47:21
я про непосредственно функцию рассылка в надстройке коей пользуюсь, ведь я не зря Вам в ответ написал именно на Ваши слова про http://www.planetaexcel.ru/plex/plex-features.php#mail
по вашей терминологии - надстройку. Но почему то каждое письмо пришлось еще и подтверждать как вот тут
http://www.planetaexcel.ru/upload/medialibrary/6de/6defaac8777d43d74678e83736506bcf.gif
28.04.2013 16:13:53
Николай, спасибо Вам за Ваш творческий потенциал!!! Великолепный материал!!!! Сразили на повал!!!
29.04.2013 18:06:59
Спасибо Николаю за его работу, очень полезная информация!

Есть вопросы:
1.Можно ли в рассылку включить для каждого получателся определённую картинку с указанием папки из которой они будут браться?
В моём случае я делаю многочисленное количетво документов, на каждый документ идёт свой чертёж, имею папку с чертежами в pdf с опредлённымы именам, все эти имена по-порядку есть также в таблице экселя. Как сделать автоматическое добавление в рассылку?
2.Можно ли брать данные для заполнения бланков с разных листов экселевского файлы или из другого файла?
3. Как пронумеровать при печати все бланки, причём на первых трёх листх должен стоять один и тот же номер бланка?

Благодарю за ответы!
01.05.2013 00:46:40
1. Встроенными средствами - никак. Можно с помощью надстройки PLEX
2. Насколько я знаю, нет - список должен быть один. Если у вас их несколько, то предварительно придется их консолидировать.
3. Сделайте в исходной таблице столбец с номерами - и выводите на бланках любые № из этой колонки.
21.05.2013 14:24:17
Столкнулась со следующей проблемой, никак не могу ее решить. Слияние настроено еще в 2006 году, все работало отлично (в том числе при переходе на более новые версии). При переходе на 2010 произошло следующее: при слиянии в Word из Excel обрезается часть текста из одного столбца (с остальными все ок). Форматы столбцов проверила - идентичны. Интернет перекопала. Ответ майкрософта - "такого не бывает". Может кто-нибудь сталкивался? Заранее спасибо!!!!
03.09.2013 15:33:41
Доброго дня. Сделал так, как указано в инструкции и всё должно было получиться, но тестовые письма рассылки не оказались в outlook в папке исходящие, а соответствующие адресаты не получили желаемого. Как быть и где копать, чтобы решить проблему?
12.11.2013 08:51:13
И еще подскажите как в примере подпись вставлена? просто скан как картинка и в шаблон письма  (world)?
12.11.2013 08:51:49
Да, конечно :)
19.11.2013 12:15:02
Добрый день Николай подскажите если нужно чтобы была рассылка но количество сток было разное  
на первой странице слияния  "номер" 1 фамилия данные, "номер" 2 фамилия данные в excel данные отсортированы:

00219

Глызов

Максим Владимирович
1

00220

Веселова

Елена Олеговна
2

00221

Кузнецова

Наталья Сергеевна
3

00222

Сандалова

Ирина Валерьевна
1

00223

Черноусов

Александр Михайлович
1

00224

Бескоровайный

Александр Сергеевич
1

00225

Калинин

Андрей Вячеславович
1
123 - в 1 страницу ворд
1 - в 2 страницу ворд
1 - в 3 страницу ворд
12345678910 - в 1 страницу ворд
03.12.2013 17:25:35
Все классно! но я не пойму где в 2003 офисе кнопка правила, чтобы изменять окончания?
11.08.2014 11:12:02
Спасибо за статью!

Скажите, пожалуйста, можно ли с помощью функции слияния добавить в каждое письмо по таблице, с информацией, которая относится к адресату?

Постараюсь объяснить на примере. Существует экселевская таблица следующего вида:
АдресатСчёт Дата открытия
"Белявский и Ко."9021001.02.2013
"Белявский и Ко."9021114.02.2013
"Белявский и Ко."9047810.08.2014
ООО "Хозтовары"9021217.02.2013
НПО "Монолит"9021323.02.2013
НПО "Монолит"9021408.03.2013
Желательно чтобы, например, в письме к "Белявский и Ко." присутствовала таблица:
Счёт Дата открытия
9021001.02.2013
9021114.02.2013
9047810.08.2014

А в письме к НПО "Монолит":
СчётДата открытия
9021323.02.2013
9021408.03.2013
12.01.2020 22:16:51
Добрый день!
Решили проблему? И каким образом?
Тоже очень нужно.
24.05.2020 05:19:07
И у меня такая же проблема
24.09.2020 06:33:22
24.09.2020 06:29:56
здравствуйте! была такая же проблема. один из путей решения.
13.08.2014 15:48:39
как корректно отобразить % ?
скажем в Excel ячейке с форматом "Проценты" имеется значение 15%
код поля MERGFIELD отображает 0.15%
28.08.2014 22:54:07
Доброго времени суток!

Столкнулась с проблемой при слиянии, перерыла весь интернет, а решения нет((. Может вы сможете помочь.

У сотрудников организации есть доступ к общему сетевому ресурсу, на котором была создана папка с документами и файлом Excel для слияния - в качестве шаблона. Работать все одновременно не могут, т.к. они самостоятельно вносят новые записи в файл xls. Было предложено каждому полностью скопировать шаблонную папку к себе в документы. И вот тут-то и возникла проблема: папка копируется, а слияние все равно делается с xls файлом из  шаблонной папки на сетевом ресурсе. Как от этого избавиться? Почему он не понимает, что для слияния нужно использовать xls документ из той же папки, откуда открывается документ word. Никакие названия при этом не меняются, ни папки, ни документов в ней, только само расположение папки.

Думаю, что все лечится пяти строчным макросом, но у меня не хватает мозгов на него. Все делается в 2010-м Office. Раньше в 2007 таких проблем не было((,

Заранее спасибо за помощь, надеюсь, что понятно описала свою проблему.
16.12.2014 16:56:35
Здравствуйте!
Спасибо за мануал по отправке почты. Вопрос у меня такой. В аутлуке есть несколько учеток. Однако письма отправляются с одной, не важно, выбрана ли она по умолчанию, или нет. Пример. Необходимо производить рассылку в с учетной записи2, а отсылает с уч. зап.1. Можно ли это как-то исправить? И как?
Заранее благодарю.
11.01.2015 00:49:37
Доброго времени суток!

Спасибо за мануал по отправке почты но как говориться есть один маленький вопрос?
Поскольку мы рассылаем многим письма без возможности открытия doc файлов а просто как сообщения без вложенных файлов, очень рады были бы вашей помощи с этим вопросом.
Суть нам надо отправить сообщение со слиянием но не как вложенный документ в письме а как просто письмо без прикрепленного файла в формате doc заранее огромное СПС и С наступившем новым годом, как у нас шутят в код козла можно пожелать побольше капусты ну поменьше козлов что капусту не ели :D С наступившим ВАС
14.01.2015 15:59:28
Почему при слиянии часть текста меняет форматирование (другой шрифт) и как это исправить?
29.01.2015 11:09:14
Все хорошо, спасибо за очередное облегчение жизни.
Но! Подпись пропадает. Как ее можно включить?
21.04.2015 21:10:53
Если Вам необходимо создать несколько отдельных файлов из "слияния" ниже приведенный скрипт поможет сделать 3 (можно поменять)  раздельных файла из ваших записей.
[/CODE]
Sub Merge1()
Dim myDoc As Document
  Dim name As String
  Set myDoc = ActiveDocument
    For i = 1 To 3 ' Вот тут надо указать сколько записей у вас есть 
        With myDoc.MailMerge
            .Destination = wdSendToNewDocument
            .SuppressBlankLines = True
            With .DataSource
                .FirstRecord = i
                .LastRecord = i
                .ActiveRecord = i
                name = .DataFields("FieldName";)Value
            End With
            .Execute Pause:=False
             
            ChangeFileOpenDirectory "D:\temp"
            ActiveDocument.SaveAs2 FileName:="File Name" & name & ".docx", _
        FileFormat:=wdFormatXMLDocument, LockComments:=False, Password:="", _
        AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
        EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
        :=False, SaveAsAOCELetter:=False, CompatibilityMode:=15
        End With
    Next
End Sub

Готов ответить на вопросы peter@mamrukov.com
Страницы: 1  2  
Наверх