Слияние документов Office - автоматизация рутинной работы
Наверное, каждый пользователь, работая с MS Word, периодически сталкивается с задачей получения множества похожих документов, которые различаются лишь некоторыми реквизитами. На первый взгляд все просто - создал шаблон, затем выделил его {Ctrl+A}, скопировал {Ctrl+C}, вставил нужное количество раз и заполнил различающиеся реквизиты. Проблемы начинаются потом, когда необходимо изменить шаблон - надо либо переделывать каждый документ, либо всю работу повторять заново. Но есть способ лучше.
(c) Компьютерная газета
Microsoft Office позволяет автоматизировать весь процесс с помощью операции "Слияние...". Эта операция позволяет автоматически создать множество копий шаблона документа с различными реквизитами. Результат можно либо выводить сразу на печать, либо получить в виде нового документа со множеством страниц. Для этого надо первоначально подготовить сам шаблон в виде произвольного документа Word и список реквизитов в виде таблицы, а затем выполнить их слияние.
При этом таблица реквизитов может быть или в документе Word, или в книге Excel. Это особенно удобно, когда Вы получаете результаты каких-либо расчетов в виде таблицы Excel (или в любой базе данных, которую Excel может открыть) и по каждому результату требуется напечатать отдельный отчет.
Например, очень распространенная задача - напечатать стопку платежных поручений (и/или требований) по списку фирм с банковскими реквизитами, заданными в таблице Excel (пусть она называется СписокФирм.xls). Для этого предварительно откорректируем список фирм - он должен быть оформлен на отдельном листе (пусть это будет Лист9) следующим образом: таблица списка должна начинаться с ячейки A1 (т.е. в начале листа не должно быть пустых строк и пустых столбцов), в первой строке списка прописаны наименования всех столбцов с данными. Обычно это Название, Адрес, Код банка, Расчетный счет и Сумма. Отформатированные таким образом листы Excel может представлять как таблицы баз данных. Если же Вы откроете в Excel'е, например, базу данных *.DBF, то таблица предстанет уже в готовом виде.
Потом перейдем в Word и создадим бланк платежного документа.
Теперь можно приступать к слиянию документов. Находясь в Word'е с открытым бланком платежного документа, выберите пункт меню "Сервис / Слияние...". Появится диалоговое окно "Слияние", в котором надо будет указать все параметры за несколько шагов.
Шаг первый - создание основного документа - нажмите кнопку "Создать". Появится список вариантов слияния - выберите пункт первый - "Документы на бланке". Откроется новое диалоговое окно "Microsoft Word" с предложением выбрать в качестве основного документа активное окно (т.е. открытый в нем документ) или создать новый - выбирайте "Активное окно" - шаблон у Вас уже есть.
Шаг второй - указание источника данных. Необходимо указать программе, где находится требуемый список (в книге СписокФирм.xls). Тогда Word запустит Excel в свернутом виде и с помощью механизма DDE (прародителя OLE) сможет прочесть данные из указанной таблицы.
Нажмите кнопку "Получить данные" и в появившемся меню выберите пункт "Открыть источник данных". Появится стандартный диалог открытия файлов. По умолчанию Word устанавливает тип файлов "Документы Word". Укажите тип файлов "Книги MS Excel" и откройте книгу с таблицей фирм. Появится еще одно диалоговое окно, уже "Microsoft Excel", где надо будет указать, на каком конкретно листе расположен список фирм. В нашем случае это Лист9 - впишите его имя вручную. Как завершение второго шага, Word выдаст сообщение, что в основном документе отсутствуют поля слияния. Не стоит беспокоиться - это не ошибка. Просто откуда взяться этим полям, если мы их еще не указали? Смело нажимайте "Правка основного документа" - переходим к самому интересному.
Окно "Слияние" закроется, а в Word'е появится дополнительная панель инструментов. Установите мигающий курсор ввода в то место шаблона, где Вы хотите указать название фирмы-плательщика. На дополнительной панели мышью нажмите кнопку "Добавить поле слияния". Развернется список полей - названий столбцов в таблице с данными. Выберите поле "Название". Теперь переместите курсор в место для адреса фирмы и укажите "Добавить поле слияния / Адрес" и так далее.
Обратите внимание, что если в названиях полей слияния присутствуют пробелы между словами, то Office заменит их на знак подчеркивания, если наклонная черта - то совсем пропустит, и т. д. Таковы правила работы с базами данных - ведь для слияния Word передает SQL-запросы, которые Excel обрабатывает и возвращает результаты.
Когда все поля расставлены, Вы можете просмотреть содержимое полей слияния внутри Вашего документа. Нажмите на панели кнопку с подписью "Поля/данные" - и Word автоматически подставит вместо названий полей их реальные значения из таблицы источника (из книги СписокФирм.xls). А сейчас нажимайте на кнопки перемещения на другие записи ("Следующая запись" и др.) и увидите, что значения полей слияния изменились на новые, взятые из следующей строки данных в таблице источника.
Как Вы уже увидели, данные для группы полей слияния в документе Word берет только из одной строки таблицы Excel, а не из нескольких. Поэтому, если что не так, обязательно еще раз проверьте источник - таблицу Excel, для каждой фирмы ее реквизиты должны быть записаны в ячейках одной строки.
Нетрудно догадаться, что в итоге получим столько копий шаблона, сколько имеем строк в таблице данных источника.
Шаг третий - завершающий. Еще раз выберите пункт меню "Сервис / Слияние...". В окне "Слияние" нажмите "Объединить". Откроется еще одно одноименное окно диалога. Здесь можно указать Назначение - слить все копии в новый документ, либо сразу вылить все на принтер. Для первого раза оставляйте указанный по умолчанию "Новый документ" и нажимайте "Объединить".
Word создаст пустой документ "Формы1" и заполнит его копиями шаблонов, разделенными разрывом страницы. Вот что значит слияние документов Office.
Этот пример (в ZIP-архиве), как и много всего интересного, можно будет взять на сайте www.Victory-Day.web.com, в разделе "Microsoft". Конечно, освоив эту процедуру, всегда хочется большего.
Например, захочется печатать документы не по всему списку, а только по тем записям (строкам), в которых сумма платежа, скажем, больше нуля. Сказано - сделано. Выбираем "Сервис / Слияние...", в окне "Слияние" нажимаем "Отбор записей". Появляется окно "Отбор записей", в одноименной закладке каждая строка - условие отбора. Для начала укажем только одно условие. В списке "Поле" укажите поле "Сумма", в списке "Оператор" установите "Больше", а в поле ввода "Значение" впишите ноль. Ok! Теперь попробуйте объединить и в результате получите только те документы, в которых значение суммы больше нуля.
Видели в окне "Отбор записей" закладку "Сортировка". Попробуем! В группе "Сортировать по полю" откройте список полей и укажите поле "Код_банка". Ok! Объединяем - получаем документы, рассортированные в группы по банкам. Можно указать поле "Сумма" и отсортировать по убыванию, чтобы в первую очередь напечатать документы для самых больших платежей.
Если же Вы печатаете платежные требования, возможно, Вы захотите указать для самых крупных должников сроки оплаты иные, нежели для остальных. Это несложно. Установите в бланке платежных требований отбор записей для сумм меньших нуля - для должников.
Установите курсор ввода в месте, где надо указать сроки оплаты, и нажмите на панели кнопку "Добавить поле Word". Развернется список с весьма странными наименованиями (на взгляд рядового пользователя). Выберите "IF.. THEN.. ELSE". Появится окно "Вставка поля IF" - то бишь "ЕСЛИ" по-ненашему. В списке полей укажите поле "Сумма", в списке операторов - "Больше", в поле значения введите "10 000 000". Далее в первом текстовом поле введите текст "требуем оплатить немедленно" или что-нибудь в этом духе - это будет в документе, для которого Сумма> 10 000 000. Во втором текстовом поле введите "оплатить в течение 3-х дней" - для тех, у кого меньшая задолженность. Ok! Объединяем - получаем кучу платежных требований с угрозами для крупных должников.
Единственное, что настораживает, - Word весьма странно интерпретирует некоторые операторы в условии поля IF. В некоторых случаях он выдает одинаковые значения для всех документов, независимо от заданного условия. Мною замечена проблема с оператором "Меньше" для отрицательных чисел. Биллу жаловаться не буду, а попробую установить ServicePack для Офиса 97 - вдруг пройдет.
После освоения описанных действий рекомендую почитать разделы справки Офиса по слиянию. Там написано, конечно, слишком мудрено, но, уже имея опыт работы по данной теме, некоторые детали можно уточнить. Это могут быть и другие поля Word, и другие форматы источников.
Использование иных источников данных, кроме книг Excel, безусловно, расширяет применение операции слияния. Испытайте самостоятельно другие варианты, указывая в качестве источника, например, базы данных Access. При использовании документов Word как источников, обратите внимание, что данные должны быть записаны в виде простой таблицы по указанным ранее правилам.
Полностью аналогичным методом можно создать "Каталог..." - отличается от "Документа на бланке" только тем, что в итоговом документе слияния не разделяет копии разрывом страницы и не хочет сразу выводиться на принтер.
Создание наклеек и конвертов отличается больше - не нужно готовить шаблон в документе Word, просто укажите в окне слияния "Создать основной документ", а потом нажмите "Настройка". Варианты размеров заранее заданы, нужно лишь выбрать подходящий, а затем появится маленькое окошко, в котором и придется готовить сам шаблон.
В заключение следует отметить, что данный механизм не претерпел каких-либо значительных изменений по сравнению с версией Office95. Немного различаются лишь команды Visual Basic, которые генерируются разными версиями Office при записи макросов, а сам интерфейс остался прежним. Поэтому, даже сидя за старой "четверкой" с Windows95 и Office95, Вы можете проделать все то же самое, тем более, что файлы примеров на сайте представлены именно в формате Office95.
Желаю успеха.
Виктор Маковчик
(c) Компьютерная газета
Microsoft Office позволяет автоматизировать весь процесс с помощью операции "Слияние...". Эта операция позволяет автоматически создать множество копий шаблона документа с различными реквизитами. Результат можно либо выводить сразу на печать, либо получить в виде нового документа со множеством страниц. Для этого надо первоначально подготовить сам шаблон в виде произвольного документа Word и список реквизитов в виде таблицы, а затем выполнить их слияние.
При этом таблица реквизитов может быть или в документе Word, или в книге Excel. Это особенно удобно, когда Вы получаете результаты каких-либо расчетов в виде таблицы Excel (или в любой базе данных, которую Excel может открыть) и по каждому результату требуется напечатать отдельный отчет.
Например, очень распространенная задача - напечатать стопку платежных поручений (и/или требований) по списку фирм с банковскими реквизитами, заданными в таблице Excel (пусть она называется СписокФирм.xls). Для этого предварительно откорректируем список фирм - он должен быть оформлен на отдельном листе (пусть это будет Лист9) следующим образом: таблица списка должна начинаться с ячейки A1 (т.е. в начале листа не должно быть пустых строк и пустых столбцов), в первой строке списка прописаны наименования всех столбцов с данными. Обычно это Название, Адрес, Код банка, Расчетный счет и Сумма. Отформатированные таким образом листы Excel может представлять как таблицы баз данных. Если же Вы откроете в Excel'е, например, базу данных *.DBF, то таблица предстанет уже в готовом виде.
Потом перейдем в Word и создадим бланк платежного документа.
Теперь можно приступать к слиянию документов. Находясь в Word'е с открытым бланком платежного документа, выберите пункт меню "Сервис / Слияние...". Появится диалоговое окно "Слияние", в котором надо будет указать все параметры за несколько шагов.
Шаг первый - создание основного документа - нажмите кнопку "Создать". Появится список вариантов слияния - выберите пункт первый - "Документы на бланке". Откроется новое диалоговое окно "Microsoft Word" с предложением выбрать в качестве основного документа активное окно (т.е. открытый в нем документ) или создать новый - выбирайте "Активное окно" - шаблон у Вас уже есть.
Шаг второй - указание источника данных. Необходимо указать программе, где находится требуемый список (в книге СписокФирм.xls). Тогда Word запустит Excel в свернутом виде и с помощью механизма DDE (прародителя OLE) сможет прочесть данные из указанной таблицы.
Нажмите кнопку "Получить данные" и в появившемся меню выберите пункт "Открыть источник данных". Появится стандартный диалог открытия файлов. По умолчанию Word устанавливает тип файлов "Документы Word". Укажите тип файлов "Книги MS Excel" и откройте книгу с таблицей фирм. Появится еще одно диалоговое окно, уже "Microsoft Excel", где надо будет указать, на каком конкретно листе расположен список фирм. В нашем случае это Лист9 - впишите его имя вручную. Как завершение второго шага, Word выдаст сообщение, что в основном документе отсутствуют поля слияния. Не стоит беспокоиться - это не ошибка. Просто откуда взяться этим полям, если мы их еще не указали? Смело нажимайте "Правка основного документа" - переходим к самому интересному.
Окно "Слияние" закроется, а в Word'е появится дополнительная панель инструментов. Установите мигающий курсор ввода в то место шаблона, где Вы хотите указать название фирмы-плательщика. На дополнительной панели мышью нажмите кнопку "Добавить поле слияния". Развернется список полей - названий столбцов в таблице с данными. Выберите поле "Название". Теперь переместите курсор в место для адреса фирмы и укажите "Добавить поле слияния / Адрес" и так далее.
Обратите внимание, что если в названиях полей слияния присутствуют пробелы между словами, то Office заменит их на знак подчеркивания, если наклонная черта - то совсем пропустит, и т. д. Таковы правила работы с базами данных - ведь для слияния Word передает SQL-запросы, которые Excel обрабатывает и возвращает результаты.
Когда все поля расставлены, Вы можете просмотреть содержимое полей слияния внутри Вашего документа. Нажмите на панели кнопку с подписью "Поля/данные" - и Word автоматически подставит вместо названий полей их реальные значения из таблицы источника (из книги СписокФирм.xls). А сейчас нажимайте на кнопки перемещения на другие записи ("Следующая запись" и др.) и увидите, что значения полей слияния изменились на новые, взятые из следующей строки данных в таблице источника.
Как Вы уже увидели, данные для группы полей слияния в документе Word берет только из одной строки таблицы Excel, а не из нескольких. Поэтому, если что не так, обязательно еще раз проверьте источник - таблицу Excel, для каждой фирмы ее реквизиты должны быть записаны в ячейках одной строки.
Нетрудно догадаться, что в итоге получим столько копий шаблона, сколько имеем строк в таблице данных источника.
Шаг третий - завершающий. Еще раз выберите пункт меню "Сервис / Слияние...". В окне "Слияние" нажмите "Объединить". Откроется еще одно одноименное окно диалога. Здесь можно указать Назначение - слить все копии в новый документ, либо сразу вылить все на принтер. Для первого раза оставляйте указанный по умолчанию "Новый документ" и нажимайте "Объединить".
Word создаст пустой документ "Формы1" и заполнит его копиями шаблонов, разделенными разрывом страницы. Вот что значит слияние документов Office.
Этот пример (в ZIP-архиве), как и много всего интересного, можно будет взять на сайте www.Victory-Day.web.com, в разделе "Microsoft". Конечно, освоив эту процедуру, всегда хочется большего.
Например, захочется печатать документы не по всему списку, а только по тем записям (строкам), в которых сумма платежа, скажем, больше нуля. Сказано - сделано. Выбираем "Сервис / Слияние...", в окне "Слияние" нажимаем "Отбор записей". Появляется окно "Отбор записей", в одноименной закладке каждая строка - условие отбора. Для начала укажем только одно условие. В списке "Поле" укажите поле "Сумма", в списке "Оператор" установите "Больше", а в поле ввода "Значение" впишите ноль. Ok! Теперь попробуйте объединить и в результате получите только те документы, в которых значение суммы больше нуля.
Видели в окне "Отбор записей" закладку "Сортировка". Попробуем! В группе "Сортировать по полю" откройте список полей и укажите поле "Код_банка". Ok! Объединяем - получаем документы, рассортированные в группы по банкам. Можно указать поле "Сумма" и отсортировать по убыванию, чтобы в первую очередь напечатать документы для самых больших платежей.
Если же Вы печатаете платежные требования, возможно, Вы захотите указать для самых крупных должников сроки оплаты иные, нежели для остальных. Это несложно. Установите в бланке платежных требований отбор записей для сумм меньших нуля - для должников.
Установите курсор ввода в месте, где надо указать сроки оплаты, и нажмите на панели кнопку "Добавить поле Word". Развернется список с весьма странными наименованиями (на взгляд рядового пользователя). Выберите "IF.. THEN.. ELSE". Появится окно "Вставка поля IF" - то бишь "ЕСЛИ" по-ненашему. В списке полей укажите поле "Сумма", в списке операторов - "Больше", в поле значения введите "10 000 000". Далее в первом текстовом поле введите текст "требуем оплатить немедленно" или что-нибудь в этом духе - это будет в документе, для которого Сумма> 10 000 000. Во втором текстовом поле введите "оплатить в течение 3-х дней" - для тех, у кого меньшая задолженность. Ok! Объединяем - получаем кучу платежных требований с угрозами для крупных должников.
Единственное, что настораживает, - Word весьма странно интерпретирует некоторые операторы в условии поля IF. В некоторых случаях он выдает одинаковые значения для всех документов, независимо от заданного условия. Мною замечена проблема с оператором "Меньше" для отрицательных чисел. Биллу жаловаться не буду, а попробую установить ServicePack для Офиса 97 - вдруг пройдет.
После освоения описанных действий рекомендую почитать разделы справки Офиса по слиянию. Там написано, конечно, слишком мудрено, но, уже имея опыт работы по данной теме, некоторые детали можно уточнить. Это могут быть и другие поля Word, и другие форматы источников.
Использование иных источников данных, кроме книг Excel, безусловно, расширяет применение операции слияния. Испытайте самостоятельно другие варианты, указывая в качестве источника, например, базы данных Access. При использовании документов Word как источников, обратите внимание, что данные должны быть записаны в виде простой таблицы по указанным ранее правилам.
Полностью аналогичным методом можно создать "Каталог..." - отличается от "Документа на бланке" только тем, что в итоговом документе слияния не разделяет копии разрывом страницы и не хочет сразу выводиться на принтер.
Создание наклеек и конвертов отличается больше - не нужно готовить шаблон в документе Word, просто укажите в окне слияния "Создать основной документ", а потом нажмите "Настройка". Варианты размеров заранее заданы, нужно лишь выбрать подходящий, а затем появится маленькое окошко, в котором и придется готовить сам шаблон.
В заключение следует отметить, что данный механизм не претерпел каких-либо значительных изменений по сравнению с версией Office95. Немного различаются лишь команды Visual Basic, которые генерируются разными версиями Office при записи макросов, а сам интерфейс остался прежним. Поэтому, даже сидя за старой "четверкой" с Windows95 и Office95, Вы можете проделать все то же самое, тем более, что файлы примеров на сайте представлены именно в формате Office95.
Желаю успеха.
Виктор Маковчик
Компьютерная газета. Статья была опубликована в номере 37 за 1999 год в рубрике soft :: субд