Автоматизация заполнения документов word
Версия данной статьи для Microsoft Visual Basic 6.0: 313193.
Аннотация
В этой статье подробно рассматривается создание документов Word с помощью возможностей автоматизации Visual Basic.
Пример кода
Следующий пример кода показывает, как это сделать:
Вставка абзацев с определенными параметрами форматирования.
Модификация диапазонов в рамках документа.
Вставка, форматирование и заполнение таблиц.
Для создания документа Word с помощью Visual Basic необходимо выполнить следующие действия.
Добавьте ссылку на объектную библиотеку Microsoft Word Object Library. Для этого выполните следующие действия:
В меню Проект выберите команду Добавить ссылку.
На вкладке COM выделите библиотеку Microsoft Word Object Library и нажмите кнопку Выбрать.
Примечание. В состав Microsoft Office 2003 и более поздних версий набора Office входят основные сборки взаимодействия (PIA). Набор Microsoft Office XP не включает эти сборки, но их можно загрузить.
Чтобы узнать больше об основных сборках взаимодействия PIA для Office XP, щелкните номер следующей статьи базы знаний Майкрософт:
328912 Загрузка основных сборок взаимодействия (PIA) для набора Microsoft Office XP
Для подтверждения сделанного выбора нажмите кнопку OK в диалоговом окне Add References. Если появится запрос на создание оберток для выбранных библиотек, нажмите кнопку Yes.
Для отображения панели элементов выберите в меню View элемент Toolbox и добавьте кнопку в форму Form1.
Дважды щелкните кнопку Button1. Появится окно программного кода формы.
В окне кода замените следующий код:
Добавьте следующий код в верхнюю часть файла Form1.vb:
Чтобы построить и запустить программу, нажмите клавишу F5.
После завершения кода проверьте созданный документ. Документ содержит две страницы форматированных абзацев, таблицы и диаграмму.
Использование шаблона
Если вы используете автоматизацию для построения документов в одинаковом формате, вы можете запустить процесс с новым документом на основе предварительно отформатированного шаблона. Использование шаблона имеет два существенных преимущества по сравнению с созданием документа с нуля.
Разработчик более полно контролирует формат и расположение объектов в документах.
Уменьшается размер программного кода, который нужен для создания документа.
Вы можете точно указать место расположения и формат объектов (например таблиц и абзацев) в рамках документа, а также включить форматирование этих объектов. Ниже приведен пример программного кода для автоматизации создания документа на основе шаблона.
Следующий программный код позволяет определить в шаблоне метки, по которым клиент автоматизации вставит произвольный текст в документ.
Еще одно преимущество использования шаблонов состоит в том, что вы можете создавать и сохранять стили форматирования, которые используются на этапе выполнения программы.
Ссылки
Дополнительные сведения см. на следующих веб-сайтах Microsoft Developer Network (MSDN):
Чтобы создать в Word форму, которую смогут заполнять другие люди, начните с шаблона или документа и добавьте элементы управления содержимым. К таким элементам относятся, например, флажки, текстовые поля, элементы выбора даты и раскрывающиеся списки. Если вы знакомы с базами данных, вы можете даже связывать элементы управления содержимым с данными.
Отображение вкладки "Разработчик"
Если вкладка "Разработчик" не отображается на ленте, см. отображение вкладки "Разработчик".
Открытие шаблона или пустого документа, на основе которого будет базироваться форма
Чтобы сэкономить время, начните с шаблона формы или начните с нуля с пустого шаблона.
Перейдите в папку >файл.
В области Поиск шаблонов в Интернетевведите Forms или тип формы и нажмите ввод.
Перейдите в папку >файл.
Выберите Пустой документ.
Добавление содержимого в форму
Перейдите вразработчик и выберите элементы управления, которые вы хотите добавить в документ или форму. Чтобы удалить управление содержимым, выберите его и нажмите кнопку Удалить. После вставки элементов управления можно настроить свойства.
Примечание: Форму с элементами управления содержимым можно распечатать, однако поля вокруг них напечатаны не будут.
В элементе управления содержимым "форматированный текст" пользователи могут выделять текст полужирным шрифтом или курсивом, а также вводить несколько абзацев текста. Чтобы ограничить возможности пользователей, вставьте элемент управления содержимым "обычный текст".
Щелкните или коснитесь того места, куда вы хотите вставить нужный контроль.
Выберите Разработчик >содержимого СОДЕРЖИМОГО или Обычный текст, .
Чтобы настроить определенные свойства для элементов управления, см. настройка и изменение свойств элементов управления содержимым.
Элемент управления "рисунок" часто используется в шаблонах, однако его можно добавить и в форму.
Щелкните или коснитесь того места, куда вы хотите вставить нужный контроль.
Выберите Developer >Picture Content Control .
Чтобы настроить определенные свойства для элементов управления, см. настройка и изменение свойств элементов управления содержимым.
Используйте стандартные блоки, когда хотите предоставить пользователям возможность выбрать определенный блок текста. Например, элементы управления созданием блоков полезны, если вам нужно добавить другой шаблон в зависимости от конкретных требований договора. Вы можете создать для каждого варианта элемент управления содержимым "форматированный текст" и поместить их все в элемент управления "стандартный блок", который будет служить контейнером.
Щелкните или коснитесь того места, куда вы хотите вставить нужный контроль.
Перейдите на веб-странице"Управлениесодержимым коллекции (или "Управление содержимым "building block").
Выберите Разработчик и элементы управления содержимым для этого блока.
Щелкните или коснитесь того места, куда вы хотите вставить нужный контроль.
Чтобы настроить определенные свойства для элементов управления, см. настройка и изменение свойств элементов управления содержимым.
Вставка поля со списком или раскрывающегося спискаВ поле со списком пользователи могут выбрать один из предложенных вами пунктов или ввести собственный вариант. В раскрывающемся списке пользователи могут только выбрать один из имеющихся пунктов.
Перейдите в >со списком для разработчиков или Управление содержимым в .
Выберите объект управления содержимым, а затем выберите Свойства.
Чтобы создать список вариантов, выберите Добавить в списке Свойства списка.
Введите вариант в области Отображаемого имени,например Да,Нетили Возможно.
Повторяйте этот шаг до тех пор, пока все нужные вам значения не окажутся в раскрывающемся списке.
При необходимости задайте остальные свойства.
Примечание: Если установить флажок Содержимое нельзя редактировать, пользователи не смогут изменять выбранные пункты.
Щелкните или коснитесь того места, куда вы хотите вставить кнопку "Выбор даты".
Выберите Developer >Date Picker Content Control .
Чтобы настроить определенные свойства для элементов управления, см. настройка и изменение свойств элементов управления содержимым.
Щелкните или коснитесь того места, куда вы хотите вставить поле с кнопкой "квадрат".
Чтобы настроить определенные свойства для элементов управления, см. настройка и изменение свойств элементов управления содержимым.
Использование устаревших элементов управления формыЭлементы управления устаревшими формами можно использовать для совместимости с более старыми версиями Word и состоят из устаревших форм и элементов Active X.
Щелкните или коснитесь того места, куда вы хотите вставить устаревший контроль.
Перейдите в > в формы.
Выберите нужный элемент управления в разделе Формы предыдущих версий или Элементы ActiveX.
Настройка и изменение свойств элементов управления содержимым
У каждого элемента управления содержимым есть параметры, которые можно установить или изменить. Например, для элемента управления "Выбор даты" вы можете выбрать различные форматы отображения даты.
Выберите содержимое, которое вы хотите изменить.
Перейдите в >для разработчиков.
Измените нужные свойства.
Защита формы
Если вы хотите ограничить возможности редактирования или форматирования формы пользователями, воспользуйтесь командой Ограничить редактирование.
Откройте форму, которую хотите заблокировать или защитить.
Выберите Разработчик >ограничить редактирование.
После выбора ограничений выберите Да, Начать защиту.
Дополнительный совет:
Если вы хотите защитить только части документа, разделите его на разделы и защитите только нужные разделы.
Для этого в области "Ограничить редактирование" выберите "Выбор разделов". Дополнительные сведения о разделах см. в статье Вставка разрыва раздела.
Отображение вкладки "Разработчик"
Если вкладка "Разработчик" не отображается на ленте, см. отображение вкладки "Разработчик".
Открытие шаблона или использование пустого документа
Чтобы создать в Word форму, которую смогут заполнять другие люди, начните с шаблона или документа и добавьте элементы управления содержимым. Элементы управления содержимым включают в себя флажки, текстовые поля и списки. Если вы знакомы с базами данных, вы можете даже связывать элементы управления содержимым с данными.
Выберите Файл > Создание из шаблона.
В области Поиск введите форма.
Дважды щелкните нужный шаблон.
Выберите файл > Сохранить каки уберите расположение для сохранения формы.
В оке Сохранитькак введите имя файла и выберите Сохранить.
Перейдите в папку > новый документ.
Выберите Файл > Сохранить как.
В оке Сохранитькак введите имя файла и выберите Сохранить.
Добавление содержимого в форму
Перейдите вразработчик и выберите элементы управления, которые вы хотите добавить в документ или форму. Чтобы удалить управление содержимым, выберите его и нажмите кнопку Удалить. После вставки элементов управления можно настроить параметры. В меню Параметры можно добавлять макрос входа и выхода для запуска при взаимодействии с элементами управления, а также элементы списка для полей со списком.
Добавление элементов управления содержимым в формуВ документе щелкните или коснитесь того места, куда вы хотите добавить управление содержимым.
На сайтеразработчика выберите Текстовое поле,Поле сополем или Поле со полем со полем со полем.
Чтобы настроить определенные свойства для этого параметра, выберите Параметрыи установите .
Повторите шаги 1–3 для каждого из элементов управления, который хотите добавить.
Параметры, которые можно настроить как для общих параметров, так и для управления определенными настройками. Выберите один из параметров, а затем выберите Параметры, чтобы настроить или внести изменения.
Настройка общих свойств.
Чтобы выбрать макрос для запуска, можно выбрать записанный или настраиваемый макрос, который будет запускаться при вводе или выходе из поля.
Закладка Указать уникальное имя или закладку для каждого из них.
Вычисления при выходе В результате Word будет запускать или обновлять любые вычисления, например общую цену при выходе пользователя из поля.
Добавление текста справки Подайте подсказки или инструкции для каждого поля.
ОК Сохранение параметров и выход из панели.
Отмена Забудет об изменениях и выход из панели.
Настройка определенных свойств для текстового окна
Тип Выберите форму Обычный текст, Число, Дата, Текущая дата, Текущее время или Вычисление.
Текст по умолчанию задает необязательный учебный текст, который отображается в текстовом поле до того, как пользователь в него вошел. Установите для поля включено разрешение ввода текста в поле.
Максимальная длина задает длину текста, который пользователь может ввести. Значение по умолчанию — Unlimited.
В текстовом формате можно настроить автоматическое форматирование текста на "Все буквы", "Нижний регистр", "Первая строчная" или "Заголовок".
Текстовое поле включено Позволяет пользователю вводить текст в поле. Если есть текст по умолчанию, пользовательский текст заменяет его.
Установите определенные свойства для квадрата.
Значение по умолчанию Выберите значение Не проверено илине по умолчанию.
Размер чека Замерять размер точно или автоматически, чтобы при необходимости изменить его.
Включена проверка Позволяет пользователю проверить или очистить текстовое поле.
Настройка определенных свойств для полей со множеством
Drop-down item Введите строки для элементов списка. Нажмите +или ВВОД, чтобы добавить элемент в список.
Элементы в списке Отображает текущий список. Выберите элемент и с помощью стрелок вверх или вниз измените порядок, нажмите — для удаления выбранного элемента.
Drop-down enabled Позволяет пользователю открыть поле со полем и выбрать его.
Перейдите в >формы разработчика.
Примечание: Чтобы отоградить форму и продолжить редактирование, еще раз выберите Защитить форму.
Сохраните и закройте форму.
При необходимости вы можете проверить форму, прежде чем распространять ее.
Откройте форму еще раз, заполните ее обычным способом и сохраните как копию.
Отображение вкладки "Разработчик"
В правой части ленты выберите , а затем выберите Параметры ленты.
В области Настройка выберитеРазработчик .
Открытие шаблона или документа, на основе которого создается форма
Вы можете можно начать работу с пустого документа и создать собственную форму с нуля. Чтобы сэкономить время, можно использовать шаблон.
Выберите Файл > Создание из шаблона.
В левой области разорите список Шаблоны из Интернетаи выберите Forms.
Дважды щелкните шаблон формы, который нужно использовать.
Добавление элементов управления содержимым в форму
В документе щелкните место, куда нужно добавить элемент управления содержимым.
На вкладке Разработчик в области Элементы управления формывыберите Текстовые поле,Квадратили Поле со полем со полем.
Чтобы настроить определенные свойства для этого параметра, выберите Параметры, а затем настройте нужные свойства.
Примечание: Чтобы составить раскрывающийся список для поля со списком, выберите заполнитель поля, щелкните Параметры и добавьте в список нужные пункты.
Повторите шаги 1–3 для каждого из элементов управления, который хотите добавить.
Добавление учебного текста (необязательно)
Пояснительный текст (например, "введите имя") в текстовом поле позволит сделать форму более удобной. По умолчанию текстовое поле остается пустым, но вы можете добавить в него текст.
Выберите текстовое поле, в которое вы хотите добавить учебный текст.
На вкладке Разработчик в области Элементы управления формывыберите Параметры.
В тексте по умолчаниювведите инструкции.
Убедитесь, что выбрана включенная заливка, а затем выберите ОК.
Защита формы
На вкладке Разработчик в области Элементы управления формывыберите Защитить форму.
Примечание: Чтобы снять защиту формы и продолжить редактирование, щелкните Защита формы еще раз.
Сохраните и закройте форму.
Проверка формы (необязательно)
При необходимости вы можете проверить форму, прежде чем распространять ее.
Откройте форму еще раз, заполните ее обычным способом и сохраните как копию.
Создание заполняемых форм невозможно в Word в Интернете.
Форму можно создать в версии Word для настольных компьютеров с помощью инструкций в области Создание заполняемой формы.
Когда вы сохраните документ и откроете его в Word в Интернете, вы увидите внесенные изменения.
Пример кода
В примере кода в этой статье показано, как выполнить следующие действия:
- Вставка абзацев с текстом и форматированием.
- Просмотр и изменение различных диапазонов в документе.
- Вставка таблиц, форматирование таблиц и заполнение таблиц данными.
- Добавление диаграммы.
Добавьте ссылку на библиотеку объектов Microsoft Word. Для этого выполните следующие действия:
- On the Project menu, click Add Reference.
- На вкладке COM найдите объект библиотека объектов Microsoft Word и нажмите кнопку Выбрать.
Note (Примечание ) В Visual Studio 2005 не нужно нажимайте кнопку выбрать.
Note (Примечание ) В состав Microsoft Office 2003 входят основные сборки взаимодействия (PIA). Microsoft Office XP не включает PIA, но их можно скачать.
В меню Вид выберите пункт Панель элементов, чтобы отобразить панель элементов, а затем добавьте кнопку в форму Form1.
Дважды щелкните элемент Button1. Откроется окно кода для формы.
В окне код замените следующий код:
Прокрутите окно до верхней части окна кода. Добавьте следующую строку в конец списка директив using:
Нажмите клавишу F5 для построения и запуска программы.
После завершения кода проверьте созданный документ. Документ содержит две страницы форматированных абзацев, таблиц и диаграмм.
Использование шаблона
Если вы используете автоматизацию для создания документов, отформатированных в общем формате, можно воспользоваться новым документом, основанным на предварительно отформатированном шаблоне. Использование шаблона с клиентом автоматизации Word имеет два существенных преимущества по сравнению с созданием документа из ничего:
- Вы можете больше управлять форматированием и размещением объектов в документах.
- Вы можете создавать документы с меньшим количеством кода.
С помощью шаблона можно выполнить точную настройку размещения таблиц, абзацев и других объектов в документе, а также включить форматирование для этих объектов. С помощью автоматизации можно создать новый документ на основе шаблона, используя следующий код:
В шаблоне можно определить закладки, чтобы клиент автоматизации мог заполнять переменный текст в определенном месте документа, как показано ниже:
Еще одно преимущество использования шаблона состоит в том, что вы можете создавать и хранить стили форматирования, которые вы хотите применить во время выполнения, следующим образом:
Ссылки
Для получения дополнительных сведений ознакомьтесь со статьями базы знаний Майкрософт:
При нажатии кнопки запуска макрос на основе шаблона dot создаёт очередной файл, и в этом документе производит замену текста ("кода поля") из первой строки файла Excel на значение поля (из очередной строки с данными файла Excel)
Папка для сформированных документов создаётся автоматически, и содержит в имени текущую дату и время
(например, созданная папка будет называться Договоры, сформированные 01-05-2011 в 15-03-24)
Имена создаваемых файлов формируются объединением полей фамилия, имя и отчество, с добавлением расширения doc
PS: Макрос был написан достаточно давно, когда я только начинал изучать VBA, - так что код недостаточно универсален.
Но, в качестве примера, пожалуй, подойдёт (если вам нужен более функциональный макрос, воспользуйтесь универсальной надстройкой (см. ниже))
Ознакомьтесь также с универсальной надстройкой формирования документов по шаблонам,
которая может делать всё тоже самое, что и эта программа,
только в качестве шаблонов могут выступать, помимо документов Word, ещё текстовые файлы, и книги Excel.
В надстройке - много возможностей, и полезных дополнений: склонение ФИО в родительный и дательный падежи, автоматический вывод на печать (с заданным количеством копий), размещение созданных файлов в разных папках, создание и рассылка писем со вложениями, и множество других полезных функций.
По вышеприведённой ссылке программа заполнения документов Word из Excel доступна для бесплатного скачивания.
Внимание: просьбы о доработке макроса, описанного в этой статье, не принимаются.
Есть новая (универсальная) версия, - в которой уже есть практически всё, что может понадобиться.
Комментарии
Спасибо, за макрос, не могли бы подсказать что в нем изменить что бы обрабатывалась только та строка в которой выделенная ячейка?
Спасибо за макрос. Очень помог в работе.
Этот макрос уже не поддерживается.
Используйте новую (расширенную) версию программы, - там все работает без ошибок.
Макрос выдает ошибку (Type mismatch (Error 13)) при обработке ячейки с формулой, подскажите пожалуйста как решить эту проблему?
Здравствуйте. Спасибо вам за этот макрос, который помог мне в работе.
Не могли бы вы еще подсказать как сделать чтоб в шаблон Word прописывались данные из нескольких (разных) строк Excel?
Заранее спасибо.
Подскажите. а можно сделать чтобы макрос обрабатывал только те строки в которых стоит номер договора, а если пусто пропускал?
Ознакомился с программой. Серьезный труд. Снимаю шляпу. Но мне понравился именно этот макрос. С колонтитулами я разобрался - оказалось ничего сложного, да и сам макрос оброс уже кучей доработок. Затянуло, знаете ли ))
Евгений, воспользуйтесь универсальной программой для заполнения документов Word - там реализована подстановка значений в колонтитулы
Вова, если нет денег на заказ, есть только 2 варианта:
1) разобраться в этих макросах, и сделать самому (благо, примеров подобных макросов в интернете предостаточно)
2) обратиться за помощью на любой из форумов по Excel (но, опять же, если с вашей стороны никаких наработок нет, вряд ли кто сделает всю работу за вас)
А если в етом макросе сделать так чтоби он заменял дание сначла с строки активной ячейки а потом если одна из ячеек следующей строки = ячейке из предедущей строкии снова вставлял в ворд документ заменяемие поля и снова делел замену, и так до момента когда одна из ячеек не будеть раван ячеике из следуищей, строки тогад макрос по ектому условию не вставляет заменяемие поля а просто сохраняет ворд документ. То есь допустим мне нужно создать документ ворд по одному из людей дание по которому есть в нескольких строках. Пожалста помогите очень нужно, просто нет денег на заказ.
Вова, в этом случае универсальное решение сделать не получится - уж слишком много возможных вариантов расположения данных в Excel, и способов заполнения документов Word.
Оформляйте заказ на сайте - сделаю для вас макрос под ваши требования.
Подскажите пожалуйста, как сделать так, чтобы макрос формировал один документ ворд на основании данных из нескольких строк Excel?
А как реализовать те же возможности, только используя функцию слияния в Word. Чтобы каждый новый раз не формировался новый документ а запись делалась на новой странице?
Теперь доступна новая версия универсальной программы формирования документов по шаблонам.
Программа очень удобна для быстрого создания договоров и приказов, заполнения актов и инструкций, печати писем и соглашений, заполнения путевых листов и извещений, распечатки протоколов и соглашений, подстановки данных в шаблоны заявлений и доверенностей.
Количество файлов-шаблонов (Word, Excel, TXT) неограничено.
Замечательно. Я, долгое время искал нечто подобное. Но к счасливой случайности вышел на Ваш сайт. Установил панели для VBA. И ещё коу-что. Практически разобрался в работе данного макроса. В VBA я, недавно. Но поставил перед собой задачу изучить его. Для этого я, решил составить программу для заполнения бланков аттестатов о среднем образовании и бланков дипломов об окончании ПТУ. До этого они заполнялись вручную. Задачу в Excel, я, программно решил, не безВашего в ней участия, некоторые фрагменты кода. У меня база заполняется посредством форм в виде развёрнутого аттестата. А, вот транспортировка данных в Word с листов - разворот и последняя страница. Как-то чуть-чуть не вяжется с общим видом программы. Нельзя-ли макрос транспортировки "засунуть" под форму? Если можно, то не смогли бы Вы посоветовать мне как это сделать. Делаю эту программу потому, что на Украине все мучаются с авторизованым заполнением бланков об окончании учебных заведений. А, так я бы мог бесплатно, это моё безусловное кредо, предоставить программу желающим. Заранее Вам благодарен. Помогая мне Вы помогаете и до того замордованым классным руководителям школ Украины.
Читайте также: