Кросс по Word. Этап 1. Шлите письма бочками
Создание неизменяемой части письма для рассылки
Создание формы для документа слияния
Определение или получение данных для слияния
Вставка поля слияния в документ
Объединение данных и формы в документ слияния
Когдато, в почти забытые советские времена, была на нашем единопрограммном телевидении передача с чудным названием «Удивительное рядом». Это словосочетание раз за разом приходит на ум при виде того, как используются возможности «главного» (фактически единственного) офисного пакета и его основного «игрока» Word. При этом, правда, в ассоциативном ряду мелькает и еще одно выражение: чтото о том, как заколачивают гвозди неким оптическим инструментом. Впрочем, обо всем по порядку…
Смешная правда жизни
Лет пять тому назад, работая над рекламным справочником страничек эдак в шестьсот, мне пришлось убить почти неделю на программирование корректного переноса информации из базы данных в верстку. Когда задача была решена, и я в минуту счастливого отдохновения лениво перелистывал Help (ну хобби у меня такое Help читать J!) и… чуть не вывалился из кресла, когда увидел там описание встроенной (!) функции Word, позволяющей решить подобную задачу в пять минут и без всякого программирования!
Этот случай так меня поразил, что, засучив рукава, я стал просматривать вордовскую справку уже не от нечего делать, а с учетом задач, которые приходится регулярно выполнять при допечатной подготовке изданий. И оказалось, что половиной тех задач, которые я раньше выполнял в других программах, можно с успехом справиться, как говорится, не отходя от Word: либо используя его встроенные функции, либо минимально программируя на VBA (впрочем, называть программированием редактирование записанного макроса, наверное, просто смешно).
Еще больше рассмешили меня результаты блицопроса среди моих знакомых пользователей программы Word, посвященного тому, как они используют этот удивительный пакет. Оказалось, что практически все работают в лучшем случае с десятой частью возможностей, предоставленных нам Биллом Гейтсом.
Немного поразмыслив, я пришел к выводу, что такое положение вещей, в принципе, логично. Широкая распространенность пакета Word сыграла с ним злую шутку: большая часть компьютерщиков воспринимает его как пакет для «чайников», а рядовым пользователям, прошедшим обучение на скоропостижных компьютерных курсах, вопервых, никто не рассказывал о скрытой мощи этой программы, а вовторых оно им надо? Уверен, что надо. Причем как тем, так и другим. Как и зачем постараюсь объяснить в серии статей, посвященных возможностям пакета Word.
Начнем знакомство с одной весьма полезной возможности программы Word, а именно с создания документов слияния.
Шлите письма бочками
Представьте себе стандартную офисную задачу напечатать и разослать адресатам сотни три писем одинакового содержания, меняя в каждом из них только адрес получателя, его фамилию и персональное обращение типа «Уважаемый Петр Николаевич!», а затем напечатать текст на ярлыках для наклейки на конверты либо на самих конвертах и составить реестр почтовых отправлений. Угадайте с одного раза, что сделает обычный пользователь?
Правильно! В лучшем случае создаст заготовку письма, а потом будет вносить туда адресную информацию, распечатывая каждый полученный документ и, возможно, сохраняя его как отдельный файл. Потом будет долго подписывать вручную конверты и напоследок еще раз наберет тот же список адресов как реестр.
Такая работа не только требует много времени, но и неэффективна: если возникнет необходимость новой рассылки по тем же адресам (но уже с другим текстом), придется набирать всю информацию заново.
Между тем, используя встроенную возможность пакета Word документ слияния это можно сделать быстро, просто и, что самое главное, однажды. А потом использовать уже введенную информацию для новых рассылок.
Идея проста разделить информацию в документе на постоянную и переменную. В данном случае постоянной информацией будет текст письма (поскольку он одинаков для всех адресатов), а изменяемой информация об адресе, названии организации, имениотчестве руководителя и т.д. Постоянная часть письма будет набрана непосредственно в редакторе Word, а переменную мы будем получать из подключенной базы данных.
Думаю, что большинству читателей известен и термин база данных (БД), и то, что собой такая база представляет. Но на всякий случай напомню: БД это информация, структурированная в таблицах по полям (колонкам) и записям (строкам). Простейший случай телефонный справочник, который содержит два вида информации, или два поля: «фамилия_абонента» и «номер_телефона», то есть «Иванов»и «1234567». Данные обоих полей составляют запись. Чем больше разных фамилий, тем больше записей. Если в телефонной книге содержится информация о 100 абонентах значит в нашей базе данных 100 записей.
Еще проще это представить в виде таблицы, где колонки это поля, а строки записи. Кстати, именно таблица и является способом местом хранения информации в БД. Она так и называется таблица базы данных.
Поля | ||
---|---|---|
Записи | «фамилия_абонента» | «номер_телефона» |
1 | Иванов | 1234567 |
2 | Петров | 7654321 |
Существуют весьма серьезные системы управления базами данных (СУБД), например Oracle или FoxPro, но сейчас мы рассматривать их не будем. Отмечу лишь, что стандартная СУБД содержит, кроме таблиц (где, собственно, и хранятся данные), еще и запросы для получения информации, а также экранные формы для представления этой информации в удобном виде и отчеты для вывода данных на печать.
Вернемся к пакету Word… Учитывая вышеизложенное, можем смело сказать, что, готовя нашу рассылку, мы тем самым создаем отчет, куда можно подставлять переменную информацию из таблицы БД. Сделаем мы это в четыре этапа:
- Подготовим текст письма для рассылки (это неизменяемая часть нашего письма, набранная в редакторе Word).
- Создадим из этого письма отчет для информации из БД.
- Получим или введем переменную информацию для подстановки в отчет (то есть создадим новую базу данных или откроем уже существующую).
- Объединим форму и данные – выведем на печать или создадим новый документ.
А теперь рассмотрим каждый из этих этапов подробнее.
Создание неизменяемой части письма для рассылки
Для начала наберем в пакете Word постоянную часть письма для рассылки (рис. 1).
Теперь сохраним файл с именем «Рассылка_поздр_февр_2003». Знаю, знаю, поморщатся сейчас некоторые коллеги, которые привыкли именовать файлы только латиницей… Согласен, латиницей надежнее, но кириллицей понятнее, а в данном случае, когда файл будет использоваться исключительно на «родной» машине, это еще и более эффективно.
Кстати, обратите внимание, что в имя файла включено не только его назначение, но и время создания. Очень рекомендую поступать именно так. Через полгода вы вряд ли вспомните, какой именно файл использовался для рассылки, если назовете его, например, «Документ27», а предложенный способ именования позволит легко найти этот документ.
Итак, неизменяемая часть письма готова. Туда, где сейчас в тексте письма подчеркивания, в дальнейшем будет подставлена переменная информация.
Создание формы для документа слияния
Теперь создадим документ слияния. Выберем последовательность в меню Сервис => Слияние (рис. 2а), откроется диалоговое окно Слияние (рис. 2б).
В нем есть три раздела по одному на каждый этап работы. Начнем с первого Создать. Нам предлагается выбрать один из четырех вариантов документа слияния или вернуться в режим обычного документа (последний вариант пока не доступен).
Документы на бланке… в итоговый документ после каждой записи будет вставляться разрыв страницы. Именно этот вариант нужен нам для создания писем на отдельных листах.
Наклейки… в итоговом документе на каждый лист будет выведено по несколько наклеек с адресами получателей из нашей базы данных. Это пригодится для подготовки наклеек на конверты.
Конверты… информация на конверте та же, что и на наклейках, только записи выводятся не блоками, по несколько штук на странице, а по одной (печатаем конверт с адресом получателя и информацией об отправителе: обратный адрес, логотип и т.д.).
Каталог… при таком способе все записи из БД в итоговый документ будут выводиться подряд, без разрывов страниц. Так мы создадим и распечатаем реестр нашей рассылки.
Итак, выбираем Документ на бланке и видим окно, которое предлагает создать либо документ на основе активного окна, либо новый основной документ (рис. 2в). Разница между ними заключается в том, что в первом случае для создания документа слияния используется уже созданный и открытый документ, а во втором будет создан новый документ в отдельном окне. Поскольку мы уже подготовили наше письмо, то выберем вариант Активное окно. Теперь свяжем наше письмо (фактически форму БД) с собственно базой данных.
Определение или получение данных для слияния
Строго говоря, источником данных может быть любая структурированная в таблицу информация из Word, Excel, Access, FoxPro и т.д. Можно использовать уже существующую БД, или создать новую. Второй вариант предпочтительнее для обычного пользователя, так как не требует знаний о СУБД (иногда довольно серьезных), поскольку вся информация будет храниться в обычном вордовском файле, организованном в виде таблицы.
Итак, выбираем: Получить данные... => Создать источник данных... (рис. 3а). В появившемся диалоговом окне Создание источника данных (рис. 3б) нам предлагается выбрать или создать поля для ввода данных нашей рассылки.
Стандартный список предлагает «базовые» поля для рассылки, но в нем есть и поля, которые нам не понадобятся, а какихто, наоборот, не хватает. Поэтому, чтобы создать новое поле, например отчество получателя (его нет в стандартном наборе), нужно в окошке ввода слева вверху ввести «Отчество» и нажать кнопку Добавить поле. Новое имя поля будет добавлено в наш список. Не нужные в данной рассылке поля легко удалить, указав имя поля в правом списке и нажав кнопку Удалить поле.
Порядок полей в списке справа можно изменять, выделив название поля и кликая вверх или вниз на кнопках Порядок, но на самом деле это не столь важно, поскольку поля можно вставлять в документ в любом порядке.
Кроме того, слева внизу есть еще кнопка MS Query…, которая предоставляет пользователю практически неограниченные возможности для извлечения информации из БД с помощью SQL (Structural Query Language) языка запросов к базам данных). Но это уже высший пилотаж, а нам пока предстоит научиться делать «взлетпосадку»…
Строго говоря, для программиста, работающего с СУБД, этап определения полей является наиглавнейшим, поскольку от грамотного структурирования БД зависит ее успешная работа в дальнейшем. Но в данном случае он не так важен. Один совет не увлекайтесь большим количеством полей: исходить следует из разумного минимума. Тем более что структуру данных можгл изменить в любой момент.
Для данной рассылки нам нужно всего десять полей, а именно: «Обращение», «Фамилия», «Имя», «Отчество», «Инициалы», «Название организации», «Должность», «Адрес», «Город», «Страна», «Индекс». Как видите, мы удалили некоторые поля из стандартного списка, но добавили несколько новых, както: «Отчество», «Инициалы», «Дата» (зачем нужны эти поля вы скоро узнаете).
Обратите внимание на кажущуюся избыточность полей для адресата и адреса. Казалось бы, гораздо проще определить одно поле «Фамилия_Имя_Отчество» с соответствующими данными и одно поле «Адрес», куда включить всю информацию об адресе (индекс, город и т.д.). Но такое вроде бы логичное решение неминуемо создаст серьезные проблемы в будущем, поэтому настоятельно рекомендую определять поля и вводить информацию как можно более дробно. Делать это нужно по очень простой причине: если в дальнейшем потребуется выбрать записи только для одного города или для одного почтового отделения, быстро справиться с задачей можно будет лишь при условии, что эти данные находятся в отдельных полях. Сейчас это может показаться вам неважным, но уж поверьте моему опыту делать это рано или поздно придется, а выбрать из полного адреса город или индекс, конечно, можно, но зачем вам эти хлопоты? Тем более что такая операция требует довольно приличного знания строковых функций СУБД и опыта программирования. Гораздо проще анализировать названия городов и прочую информацию, если она изначально заложена в отдельных полях.
Когда все нужные имена полей определены, нажмите ОК. Word предложит нам указать имя файла, в котором будут храниться данные для слияния (то есть таблицы с данными). Имя может быть любым, но рекомендую использовать имя основного документа с добавлением слова «данные». Например, имя нашего бланка рассылки «Рассылка_поздр_февр_2003», тогда имя файла данных должно быть таким: «Рассылка_поздр_февр_2003_данные».
После указания имени файла данных откроется окно выбора дальнейших действий (рис. 3в). Можно перейти либо к правке файла данных, либо к правке основного документа. Чтобы подготовить наше письмо к подключению данных, выберем Правка основного документа.
Вставка поля слияния в документ
По завершении вышеописанных операций в строке меню редактора Word появится новая панель инструментов «Слияние», а на ней кнопки Добавить поле слияния, Добавить поле Word, а также кнопки навигации (пока они неактивны) и прочие кнопки управления работой с документом слияния. Кликнув по кнопке Добавить поле слияния, мы увидим список со всеми именами полей, которые только что были определены для наших данных (рис. 4).
Сейчас самое время вставить эти поля вместо подчеркиваний в письмо и посмотреть, что получится. Итак, выделяем первое подчеркивание в письме, кликаем по кнопке Добавить документ слияния и выбираем в нем Фамилия. Верхняя часть нашего письма примет вид, как на рис. 5.
Продолжим вставлять поля вместо подчеркиваний туда, где в письме должна быть соответствующая информация. В итоге мы должны получить следующий документ, изображенный на рис. 6.
Пока в тексте стоят только имена полей, а не сама информация. Собственно, нам пока больше и нечего видеть, потому что наша БД еще пуста. Самое время ее заполнить информацией для рассылки. Кликнем по кнопке Правка источника данных панели инструментов Слияние (рис. 7).
Назначение кнопок этого окна вполне понятно и не требует детальных объяснений. Сюда нужно вводить данные, которые будут подставляться в наше письмо.
Одно замечание: если кликнуть по кнопке Источник, будет открыт файл с данными. В нем можно редактировать и сами поля, и данные в этом файле. В принципе, это равнозначно добавлению и редактированию записей в самом диалоговом окне, как на рис. 7. После того как все желаемые данные введены, закроем окно ввода данных. Теперь БД содержит информацию, которую можно посмотреть прямо в документе.
На рис. 8 представлены два состояния нашего документа: в режиме просмотра имен полей (рис. 8а) и в режиме просмотра данных (рис. 8б). Переключение между этими режимами производится кнопкой Поля/данные в панели Слияние.
Очень важно то, что информация, которая появляется в нашем документе, полностью сохраняет форматирование соответствующих полей, вставленных в документ. Попробуйте, находясь в режиме Поля (кнопка Поля/данные), выделить поле «Фамилия» и назначить ему, например, красный цвет текста. Затем переключитесь в режим Данные (та же кнопка). Вы увидите, что текст фамилии адресата тоже стал красным (в соответствии с тем, как вы указали внешний вид для поля «Фамилия»). Эта возможность позволяет эффективно и быстро изменять вид письма.
Рядом с кнопкой Поля/данные находится несколько кнопок навигации по записям созданной нами БД. Конечно, чтобы перемещаться по записям, их количество должно быть больше единицы. Как добавлять новые записи, мы уже рассмотрели.
После того как все желаемые данные занесены в БД, осталось объединить данные и форму их представления в документе слияния.
Объединение данных и формы в документ слияния
Кликнем по кнопке Объединить…, и откроется диалоговое окно Слияние (рис. 9).
В нем мы можем указать, куда отправить созданный документ слияния: в новый документ, на принтер или как электронное письмо. Кроме того, здесь же можно указать, какой диапазон записей нам нужен. При этом записи можно указать либо по номерам, либо (кликнув кнопку Отбор записей…) отобрать их по определенному критерию. Немного поэкспериментировав с условиями отбора, вы наверняка быстро разберетесь что к чему.
Самый простой и надежный вариант объединения записей создать новый документ, просмотреть его и только потом пустить на печать.
После команды на объединение будет создан новый документ, со всеми отобранными записями, причем каждая из них будет отделяться от другой разрывом страницы (как вы помните, именно такой вариант документа слияния мы выбрали). Таким образом, если мы отобрали две записи, то наш итоговый документ будет выглядеть так, как показано на рис. 10.
Нам остается только сохранить этот документ. Рекомендую назвать его так же, как и основной, добавив в конце имени файла слово «сборка» или чтото в этом роде: «Рассылка_поздр_февр_2003_сборка».
Настоятельный совет: никогда не посылайте создаваемый документ слияния прямо на физический принтер. Дело в том, что при использовании данных не из созданной нами БД, а из какойто другой (о том, как это сделать будет рассказано в следующих статьях) мы не можем заранее знать, какого размера запись появится в нашем документе слияния. Случается, что запись в какомто из полей настолько длинна, что нарушает подготовленный нами макет итогового документа. Кроме того, при подключении информации из внешних источников могут возникнуть и другие проблемы, например если источник таблица Excel, в одном из полей которой нет информации (пустое поле), то последующие поля выводятся не туда и не так, как предполагалось. Поэтому нужно обязательно просмотреть созданный документ слияния перед печатью и при необходимости отредактировать его.
И еще одно замечание. В меню Назначение диалогового окна Слияние есть интереснейший пункт Электронная почта, который позволяет отправить созданный документ по электронной почте по тысячам адресов прямо из редактора Word. Как это сделать? Об этом вы тоже узнаете в следующих публикациях.
Финиш первого этапа
Для начала достаточно. Мы уже умеем создавать документы слияния из составленной нами же таблицы БД и печатать итоговый документ. Но оптимальный вариант не морочить себе голову вводом большого количества информации, а использовать уже существующие данные для создания собственных рассылок. Не стану утверждать, что сделать это просто, но ничего невозможного нет. Было бы желание разобраться.