Когда-то, в почти забытые советские времена, была на нашем единопрограммном телевидении передача с чудным названием «Удивительное — рядом». Это словосочетание раз за разом приходит на ум при виде того, как используются возможности «главного» (фактически — единопрограммного)офисного пакета и его основного «игрока» — Word’а.
При этом, правда, в ассоциативном ряду мелькает и еще одно выражение, что-то о том, как заколачивают гвозди неким оптическим инструментом. Впрочем,обо всем по порядку…
Смешная правда жизни
Лет пять тому назад, выполняя объемную задачу подготовки рекламного справочника страничек эдак в шестьсот, мне пришлось убить почти неделю на программирование корректного переноса информации из базы данных в верстку. Когда задача была решена, я, в минуту счастливого отдохновения, лениво перелистывал в Word’е Help (ну, хобби у меня такое – Help’ы читать :-)) и… чуть не вывалился из кресла, когда увидел там описание встроенной (!) функции Word-а, которая позволяла решить мою задачу в пять минут без всякого программирования!
Этот случай так меня поразил, что, засучив рукава, я стал просматривать Word-овскую справку уже не от нечего делать, а с учетом задач, которые приходится регулярно выполнять при допечатной подготовке изданий. И оказалось: половина того, что я раньше делал в других программах, можно с успехом выполнять, как говорится, не отходя от Word-а: либо используя его встроенные функции, либо минимально программируя на VBA (впрочем, называть программированием редактирование записанного макроса, наверное, просто смешно).
А еще больше рассмешили меня результаты блиц-опроса среди моих знакомых, пользователей Word-а, о том, как они используют возможности этого удивительного пакета. Оказалось, что практически все пользуются, в лучшем случае, десятой частью его возможностей.
Немного поразмыслив, я пришел к выводу, что такое положение вещей, в принципе, логично. Широкая распространенность Word-а сыграла с ним злую шутку: большая часть «компьютерных профессионалов» воспринимает его как пакет для «чайников», ну а «рядовым» пользователям, прошедшим обучение на скоропостижных компьютерных курсах, во-первых, никто не рассказывал о скрытой мощи Word-а, и, во-вторых, оно им надо?
Уверен, что надо. Причем, как тем, так и другим. Как и зачем, постараюсь объяснить в серии статей, посвященных использованию Word.
Начнем знакомство с одной весьма полезной возможности Word-а, а именно — документов слияния.
Шлите письма бочками
Представим себе совершенно стандартную офисную задачу — напечатать и разослать адресатам сотни три писем одинакового содержания, вписывая в каждое из них адрес получателя, его фамилию и персональное обращение типа «Уважаемый Петр Николаевич!», а затем напечатать ярлыки для наклейки на конверты (либо сами конверты) и реестр почтовых отправлений.
Угадайте с одного раза, что сделает «обычный» пользователь?
Правильно! В лучшем случае создаст заготовку письма, а потом будет вносить туда адресную информацию, распечатывая каждый полученный документ, и, возможно, записывая его отдельным файлом. Потом будет долго подписывать вручную конверты и, напоследок, еще раз наберет тот же список адресов как реестр.
Затраты времени на такую работу не только велики, но еще и совершенно неэффективны: если возникнет необходимость новой рассылки по тем же адресам (но уже с другим текстом), придется набирать всю информацию снова.
Между тем, используя встроенную возможность Word-а, которая называется «документ слияния», все это можно сделать быстро, элегантно и, что самое главное, — только однажды. А потом использовать уже введенную информацию для новых рассылок.
Идея проста — разделить информацию в документе на постоянную и переменную. В данном случае постоянной информацией будет текст нашего письма (поскольку он неизменен для всех адресатов), а изменяемой — информация об адресе, названии организации, имени отчестве руководителя и т.д.
Постоянная часть письма будет набрана непосредственно в Word-е, а переменную мы будем получать из подключенной базы данных.
Думаю, что большей части читателей известен и термин «база данных» (БД), и то, что собой такая база представляет.
Но, на всякий случай, напомню: БД — это информация, структурированная в таблицах по полям (колонкам) и записям (строкам). Простейший случай — телефонный справочник, который содержит два вида информации (или два поля): «фамилия_абонента» и «номер_телефона», то есть «Иванов», «123-45-67». Совместно данные обоих полей составляют запись. Чем больше разных фамилий — тем больше записей. Если в телефонной книге информация о 100 абонентах, значит, в нашей базе данных — 100 записей.
Еще проще это представить в виде таблицы, где колонки — это поля, а строки — записи. Кстати, именно таблица и есть место хранения информации в БД. Она так и называется – таблица базы данных.
Поля |
|||
Записи |
«фамилия_абонента» |
«номер_телефона» |
|
1 |
Иванов |
123-45-67 |
|
2 |
Петров |
765-43-21 |
Существуют весьма серьезные системы управления базами данных (СУБД), например, Oracle или FoxPro, но в данном случае мы на них фиксировать внимание не будем. Отмечу лишь, что стандартная СУБД содержит, кроме таблиц, где, собственно, и хранятся данные, еще и запросы для получения информации, а также экранные формы для представления этой информации в удобном виде и отчеты для вывода данных на печать.
Вернемся к Word-у… Учитывая вышеизложенное, можем смело сказать, что, готовя нашу рассылку, мы тем самым создаем отчет, куда можно подставлять переменную информацию из таблицы БД. Сделаем мы это в четыре этапа:
-
Подготовим текст письма для рассылки (это неизменяемая часть нашего письма, набранная в Word-е).
-
Создадим из этого письма отчет для информации из БД.
-
Получим или введем переменную информацию для подстановки в отчет (то есть создадим новую базу данных или откроем уже существующую).
-
Объединим форму и данные — на печать или в новый документ.
А теперь – по порядку:
1. Создадим неизменяемую часть письма для рассылки
Для начала наберем в Word-е постоянную часть нашего письма для рассылки.
Например:
_________________________
_________________________ ___________ ____ ______ __________!
|
Теперь сохраним файл с именем «Рассылка_поздр_февр_2003».
Знаю, знаю, поморщатся сейчас некоторые коллеги, которые привыкли именовать файлы только латиницей… Согласен, латиницей надежнее. Но кириллицей — понятнее, а в данном случае, когда файл будет использоваться исключительно на «родной» машине, это еще и более эффективно.
Кстати, обратите внимание, что в имя файла включено не только его назначение, но и время создания. Очень рекомендую делать либо так, либо близко к этому. Через полгода вы вряд ли вспомните, какой именно файл использовался для рассылки, если назовете его как-нибудь вроде «Документ27», а вот предложенный способ именования позволит этот документ легко найти в дальнейшем.
Итак, неизменяемая часть письма готова. Там, где сейчас в тексте письма подчеркивания, в дальнейшем будет подставлена переменная информация.
2. Создание формы для документа слияния
А теперь создадим документ слияния. Выберем последовательность в меню Сервис — Слияние...
Откроется диалоговое окно «Слияние»
В нем — три раздела: по одному на каждый этап работы. Начнем с первого «Создать».
Нам предлагается выбрать один из четырех вариантов документа слияния или вернуться в режим обычного документа (последний вариант пока что недоступен).
-
Документы на бланке… — в итоговый документ после каждой записи будет вставляться разрыв страницы. Именно этот вариант нужен нам для создания писем на отдельных листах.
-
Наклейки… — в итоговом документе на каждый лист будет выведено по несколько наклеек с адресами получателей из нашей базы данных. Это пригодится для подготовки наклеек на конверты.
-
Конверты… — информация на конверте — та же, что и на наклейках, только записи выводятся не блоками по несколько штук на страницу, а по одной (печатаем конверт с адресом получателя и информацией об отправителе: обратный адрес, логотип и т.д.).
-
Каталог… — при таком способе все записи из БД в итоговый документ будут выводиться подряд, без разрывов страниц. Так мы создадим и распечатаем реестр нашей рассылки.
Итак, выбираем Документ на бланке и видим окно, которое предлагает либо создать документ на основе активного окна, либо создать новый основной документ (рис.1в).
Разница между ними в том, что в первом случае для создания документа слияния используется уже созданный и открытый документ, а во втором — будет создан новый документ в отдельном окне.
Поскольку мы уже подготовили наше письмо, то выберем вариант «Активное окно». Теперь свяжем наше письмо (фактически — форму БД) с собственно базой данных.
3. Определим или получим данные для слияния
Строго говоря, источником данных может быть любая структурированная в таблицу информация из Word, Excel, Access, FoxPro и т.д. Можно как использовать уже существующую БД, так и создать новую. Второй вариант — предпочтительнее для «обычного» пользователя, т.к. не требует знаний о СУБД (иногда — довольно серьезных), поскольку вся информация будет храниться в обычном файле Word-а, организованном в виде таблицы.
Итак, выбираем: «Получить данные...» — «Создать источник данных...»
В появившемся диалоговом окне «Создание источника данных» (рис. 2б) нам предлагается выбрать или создать поля для ввода данных нашей рассылки.
Стандартный список предлагает «базовые» поля для рассылки, но там есть поля, которые нам не понадобятся, а каких-то там не хватает. Поэтому, чтобы создать новое поле, например, отчество получателя (его нет в стандартном наборе), нужно в окошке ввода слева вверху ввести «Отчество» и нажать кнопку «Добавить поле». Новое имя поля будет добавлено в наш список. Не нужные в данной рассылке поля легко удалить, указав имя поля в правом списке и нажав кнопку «Удалить поле».
Порядок полей в списке справа можно изменять, выделив название поля и кликая вверх или вниз на кнопках «Порядок», но на самом деле это не столь важно, поскольку поля можно вставлять в документ в каком угодно порядке.
Кроме того, слева внизу есть еще одна кнопочка «MS Query…», которая при правильном использовании открывает перед пользователем практически неограниченные возможности для извлечения информации из БД с помощью SQL (Structural Query Language, язык запросов к базам данных). Но это — уже высший пилотаж: нам пока что предстоит научиться делать «взлет-посадку»…
Строго говоря, для программиста, работающего с СУБД, этап определения полей есть наиглавнейший, поскольку от грамотного структурирования БД зависит ее успешная работа в дальнейшем. Но в данном очень простом случае это не так важно.
Один совет — не увлекайтесь большим количеством полей: исходить следует из разумного минимума. Тем более, что структуру данных мы можем изменить в дальнейшем в любой момент.
Для данной рассылки нам нужно всего 10 полей, а именно: «Обращение», «Фамилия», «Имя», «Отчество», «Инициалы», «Название организации», «Должность», «Адрес», «Город», «Страна», «Индекс».
Как видим, мы удалили некоторые поля из стандартного списка, но добавили несколько новых, а именно: «Отчество», «Инициалы», «Дата» (зачем эти поля — чуть ниже),
Обратите внимание на кажущуюся избыточность полей для адресата и адреса.
Сделать это нужно по простой причине: если в дальнейшем потребуется выбрать записи только для одного города или для одного почтового отделения, быстро сделать это можно будет лишь при условии, что эти данные находятся в отдельных полях. Пока что это может показаться для вас неважным, но уж тут поверьте моему опыту — делать это придется рано или поздно, а выбрать из полного адреса город или индекс, конечно, можно, но зачем нам эти хлопоты? Тем более, что такая операция требует довольно приличных знаний строковых функций СУБД и опыта программирования. Гораздо проще анализировать названия городов и прочую информацию, если она изначально заложена в отдельных полях.
Когда все нужные имена полей определены, жмем Ок. Word предложит нам указать имя файла, в котором будут храниться данные для слияния (то есть — таблицы с данными). Имя может быть любым, но рекомендую использовать имя основного документа с добавлением слова «данные». Например, имя нашего бланка рассылки «Рассылка_поздр_февр_2003». Тогда имя файла данных должно быть таким «Рассылка_поздр_февр_2003_данные».
После указания имени файла данных откроется окно выбора дальнейших действий. В зависимости от выбора мы можем перейти либо к правке файла данных, либо к правке основного документа. Чтобы подготовить наше письмо к подключению данных, выберем «Правка основного документа».
4. Вставим поля слияния в наш документ
После проведенных операций в строке меню Word-а появится новая панель инструментов «Слияние», а на ней — кнопки «Добавить поле слияния», «Добавить поле Word», а также кнопки навигации (они пока что неактивны) и прочие кнопки управления работой с документом слияния. Кликнув на кнопке «Добавить поле слияния», мы увидим список со всеми именами полей, которые мы только что определили для наших данных
Сейчас самое время вставить эти поля вместо подчеркиваний в наше письмо и посмотреть, что получится.
Итак, выделяем первое подчеркивание в письме, кликаем на кнопку «Добавить документ слияния» и выбираем в нем «Фамилия». Верхняя часть нашего письма примет вот такой вид:
«Фамилия» ___ ____
_________________________ ___________ ____ ______ __________!
|
Продолжим вставлять поля вместо подчеркиваний туда, где должна быть в письме соответствующая информация.
В итоге всех манипуляций мы должны получить следующий документ:
«Фамилия» «Инициалы», «Обращение» «Имя»«Отчество»!
|
Пока что мы видим в тексте только имена полей, а не саму информацию. Собственно, нам пока что и нечего больше видеть, потому что наша БД еще пуста. Самое время ее заполнить информацией для рассылки.
Кликнем на кнопке «Правка источника данных» панели инструментов «Слияние».
Назначение кнопок этого окна вполне понятно и не требует детальных объяснений. Сюда нужно вводить данные, которые будут подставляться в наше письмо.
Одно замечание. Если кликнуть на кнопке «Источник», будет открыт файл с данными. В нем можно редактировать и сами поля, и данные в этом файле. В принципе, это совершенно равнозначно добавлению и редактированию записей в самом диалоговом окне. Тут уж, как кому удобнее.
После того, как все желаемые данные введены, закроем окно ввода данных. Теперь БД содержит информацию, которую можно посмотреть прямо в документе.
Далее представлены два состояния нашего документа: в режиме просмотра имен полей и в режиме просмотра данных. Переключение между этими режимами производится кнопкой «Поля/данные» в панели «Слияние».
Рядом с кнопкой «Поля/данные» находится несколько кнопок навигации по записям созданной нами БД. Конечно, чтобы перемещаться по записям, их количество должно быть больше единицы. Как добавлять новые записи, мы уже рассмотрели.
После того, как все желаемые данные занесены в БД, осталось объединить данные и форму их представления в едином документе слияния.
5. Объединим данные и форму в единый документ слияния
Кликнем на кнопке «Объединить…», откроется диалоговое окно «Слияние»
В этом окне мы можем указать, куда отправить созданный документ слияния: в новый документ, на принтер или как электронное письмо.
Кроме того, можно прямо здесь же указать, какой диапазон записей нам нужен. При этом записи можно указать либо по номерам, либо (кликнув кнопку «Отбор записей…»), отобрать их по какому-то критерию. Немного поэкспериментировав с условиями отбора, можно быстро разобраться что к чему.
Самый простой и надежный вариант объединения записей — создать новый документ, просмотреть его и только потом печатать.
После команды на объединение будет создан новый документ, со всеми отобранными записями, причем каждая из них будет отделяться от другой разрывом страницы (как Вы помните, именно такой вариант документа слияния мы выбрали). То есть, если мы отобрали две записи, то наш итоговый документ будет выглядеть вот так:
Сидоров П.Н., директор Уважаемый Петр Николаевич!
|
--------------- Разрыв страницы -------------- Иванова М.П., нач. отдела запрещений Уважаемая Мария Петровна! Специально для Вас наша компания предлагает новую эксклюзивную услугу — личное поздравление Вашего любимого начальника от Вашего имени. |
Нам остается сохранить этот документ. Рекомендую назвать его так же, как и основной, добавив в конце имени файла слово «сборка» или что-то в этом роде. То есть «Рассылка_поздр_февр_2003_сборка».
Настоятельный совет: никогда не посылайте создаваемый документ слияния прямо на физический принтер. Дело в том, что при использовании данных не из созданной нами БД, а из какой-то другой (о том, как это сделать — в следующих статьях), то мы не можем заранее знать, какого размера запись появится в нашем документе слияния.
Случается, что информация в каком-то из полей настолько длинна, что нарушает подготовленный нами макет итогового документа. Кроме того, при подключении информации из внешних источников могут возникнуть и другие проблемы, например, если источник — таблица Excel, в одном из полей которой нет информации (пустое поле), то последующие поля выводятся не туда и не так, как предполагалось. Поэтому нужно обязательно просмотреть созданный документ слияния перед печатью и, при необходимости, отредактируйте его.
И еще одно. В меню «Назначение» диалогового окна «Слияние» есть интереснейший пункт «Электронная почта», который позволяет отправить созданный нами документ по электронной почте в тысячи адресов прямо из Word-а. Как это сделать — тоже в следующих статьях.
Финиш первого этапа
Ну вот, для начала — достаточно. Мы уже умеем создавать документы слияния из созданной нами же таблицы БД и печатать итоговый документ.
Но гораздо интереснее не морочить себе голову вводом большого количества информации, а использовать уже существующие данные для создания собственных рассылок. Не стану утверждать, что сделать это совсем просто, но — нет ничего невозможного. Было бы желание разобраться.