Vba excel создать документ word
Автоматизация Microsoft Word с помощью Visual Basic для создания нового документа
Сводка
В этой статье описывается создание нового документа в Word с помощью автоматизации из Visual Basic.
Пример кода
В примере кода в этой статье показано, как выполнить следующие действия:
- Вставка абзацев с текстом и форматированием.
- Просмотр и изменение различных диапазонов в документе.
- Вставка таблиц, форматирование таблиц и заполнение таблиц данными.
- Добавление диаграммы.
Чтобы создать новый документ Word с помощью автоматизации из Visual Basic, выполните следующие действия:
В Visual Basic создайте новый стандартный проект EXE. По умолчанию создается форма Form1.
В меню проект выберите пунктссылки, выберите один из следующих параметров и нажмите кнопку ОК:
- Для Office Word 2007 щелкните объектная Библиотека Microsoft Word 12,0.
- В Word 2003 щелкните объектная Библиотека Microsoft word 11,0.
- В Word 2002 щелкните объектная Библиотека Microsoft word 10,0.
- В Word 2000 щелкните объектная Библиотека Microsoft word 9,0.
Добавление элемента управления CommandButton в форму Form1.
Добавьте следующий код в событие Click для Command1:
Нажмите клавишу F5, чтобы запустить программу, а затем выберите Command1.
После завершения кода проверьте созданный документ. Документ содержит две страницы форматированных абзацев, таблиц и диаграмм.
Использование шаблона
Если вы используете автоматизацию для создания документов, отформатированных в общем формате, можно воспользоваться новым документом, основанным на предварительно отформатированном шаблоне. Использование шаблона с клиентом автоматизации Word имеет два существенных преимущества по сравнению с созданием документа из ничего:
- Вы можете больше управлять форматированием и размещением объектов в документах.
- Вы можете создавать документы с меньшим количеством кода.
С помощью шаблона можно выполнить точную настройку размещения таблиц, абзацев и других объектов в документе, а также включить форматирование для этих объектов. С помощью автоматизации можно создать новый документ на основе шаблона, используя следующий код:
В шаблоне можно определить закладки, чтобы клиент автоматизации мог заполнять переменный текст в определенном месте документа, как показано ниже:
Еще одно преимущество использования шаблона состоит в том, что вы можете создавать и сохранять стили форматирования, которые вы хотите применить во время выполнения, следующим образом:
Ссылки
Для получения дополнительных сведений щелкните номера статей, приведенные ниже, чтобы просмотреть статьи базы знаний Майкрософт:
285332 как автоматизировать Word 2002 с помощью Visual Basic для создания слияния почты
(c) корпорация Майкрософт (Microsoft Corporation) 2001, все права защищены. Вклады Лори B. Турнер, корпорация Майкрософт.
10.4.2 Свойства и методы коллекции Documents
Коллекция Word.Documents, методы Add(), Open(), Item(), программное создание и открытие документов Word в VBA
Коллекция Documents, как уже говорилось, представляет все документы Word, открытые в настоящий момент. Начинается нумерация документов в коллекции с 1. Из свойств этой коллекции интерес может представлять только свойство Count — количество открытых документов. Гораздо важнее методы этой коллекции. Про некоторые из них мы уже говорили в предыдущем разделе, но здесь для справки при приведем информацию о них еще раз:
- Add() — этот метод позволяет создать и сразу же открыть новый документ (и вернуть ссылку на его объект). Это — наиболее распространенный способ создания новых документов в Word. Полный синтаксис этого метода выглядит как
Add(Template, NewTemplate, DocumentType, Visible)
Template — это шаблон для создания нового документа, NewTemplate (true/false ) — делать ли новый документ шаблоном, DocumentType — варианты: wdNewBlankDocument , wdNewEmailMessage, wdNewFrameset или wdNewWebPage (по умолчанию — новый чистый документ ), Visible — будет ли новый документ видимым (по умолчанию ) или невидимым .
- Open() — этот еще один важнейший метод коллекции Documents позволяет открыть документ с диска и добавить его в коллекцию. Этот метод принимает множество параметров, из которых обязательным является только один — имя документа (вместе с путем к нему). Самый простой вариант применения этого метода выглядит так:
Dim oDoc1 As Document
Set oDoc1 = Documents.Open(«c:doc1.doc»)
- метод Item() позволяет найти нужный документ в коллекции по его индексу. Но обычно для получения ссылки на нужный документ используется конструкция For..Next с проверкой значения какого-либо свойства документа через If. Чаще всего это свойство — Name:
Dim oDoc1 As Document
For i = 1 To Documents.Count
Set oDoc1 = Documents.Item(i)
If oDoc1.Name = «doc1.doc» Then
Set oDoc1 = Nothing
Эта конструкция возвращает ссылку в виде переменной oDoc1 на документ doc1.doc, если он точно есть в коллекции. Если его нет, то во избежание ошибок нужно реализовывать дополнительные проверки. На практике можно было бы подумать, не нужно ли вам перед сравнением привести имя документа doc1.doc в нижний регистр — если учитывать регистр букв при поиске вам не нужно.
Через свойство Item можно получить доступ к объекту документа напрямую. Например, в этом примере мы получаем имя первого документа в коллекции Documents:
- методы Save() и Close() — позволяют сохранить и закрыть все документы в коллекции соответственно.
- методы CanCheckOut() (можно ли «забрать» документ в монопольный доступ) и CheckOut() (забрать документ в монопольный доступ) можно применять, если документ находится в документной библиотеке в базе данных SharePoint Portal Server.
Макрос создания документов Word по данным таблицы Excel
Макрос предназначен для программного создания документов Word на основе шаблона
(без использования функции слияния в Word)
В прикреплённом к статье архиве находятся 2 файла:
- шаблон договора в формате Microsoft Word (расширение .dot)
- файл Excel с макросом
Настройки макроса задаются в коде:
Const ИмяФайлаШаблона = «шаблон.dot»
Const КоличествоОбрабатываемыхСтолбцов = 8
Const РасширениеСоздаваемыхФайлов = «.doc»
При нажатии кнопки запуска макрос на основе шаблона dot создаёт очередной файл, и в этом документе производит замену текста («кода поля») из первой строки файла Excel на значение поля (из очередной строки с данными файла Excel)
Папка для сформированных документов создаётся автоматически, и содержит в имени текущую дату и время
(например, созданная папка будет называться Договоры, сформированные 01-05-2011 в 15-03-24)
Имена создаваемых файлов формируются объединением полей фамилия, имя и отчество, с добавлением расширения doc
PS: Макрос был написан достаточно давно, когда я только начинал изучать VBA, — так что код недостаточно универсален.
Но, в качестве примера, пожалуй, подойдёт (если вам нужен более функциональный макрос, воспользуйтесь универсальной надстройкой (см. ниже))
Ознакомьтесь также с универсальной надстройкой формирования документов по шаблонам,
которая может делать всё тоже самое, что и эта программа,
только в качестве шаблонов могут выступать, помимо документов Word, ещё текстовые файлы, и книги Excel.
В надстройке — много возможностей, и полезных дополнений: склонение ФИО в родительный и дательный падежи, автоматический вывод на печать (с заданным количеством копий), размещение созданных файлов в разных папках, создание и рассылка писем со вложениями, и множество других полезных функций.
По вышеприведённой ссылке программа заполнения документов Word из Excel доступна для бесплатного скачивания.
Внимание: просьбы о доработке макроса, описанного в этой статье, не принимаются.
Есть новая (универсальная) версия, — в которой уже есть практически всё, что может понадобиться.
Вложение | Размер | Загрузки | Последняя загрузка |
---|---|---|---|
CreateWordDocuments2.zip | 139.71 КБ | 34 | 5 лет 47 недель назад |
- 160324 просмотра
Комментарии
Спасибо, за макрос, не могли бы подсказать что в нем изменить что бы обрабатывалась только та строка в которой выделенная ячейка?
Спасибо за макрос. Очень помог в работе.
Этот макрос уже не поддерживается.
Используйте новую (расширенную) версию программы, — там все работает без ошибок.
Макрос выдает ошибку (Type mismatch (Error 13)) при обработке ячейки с формулой, подскажите пожалуйста как решить эту проблему?
Здравствуйте. Спасибо вам за этот макрос, который помог мне в работе.
Не могли бы вы еще подсказать как сделать чтоб в шаблон Word прописывались данные из нескольких (разных) строк Excel?
Заранее спасибо.
Подскажите. а можно сделать чтобы макрос обрабатывал только те строки в которых стоит номер договора, а если пусто пропускал?
Ознакомился с программой. Серьезный труд. Снимаю шляпу. Но мне понравился именно этот макрос. С колонтитулами я разобрался — оказалось ничего сложного, да и сам макрос оброс уже кучей доработок. Затянуло, знаете ли ))
Евгений, воспользуйтесь универсальной программой для заполнения документов Word — там реализована подстановка значений в колонтитулы
Добрый день! Макрос очень помог в работе. Доделал его немного под свои нужды: вывод в разные шаблоны документов word при разных значениях в excel. Остался один вопрос — в сам документ word текст вставляется отлично, а вот в колнтитулы — нет 🙁 Подскажите, пожалуйста, как это исправить?
Вова, если нет денег на заказ, есть только 2 варианта:
1) разобраться в этих макросах, и сделать самому (благо, примеров подобных макросов в интернете предостаточно)
2) обратиться за помощью на любой из форумов по Excel (но, опять же, если с вашей стороны никаких наработок нет, вряд ли кто сделает всю работу за вас)
А если в етом макросе сделать так чтоби он заменял дание сначла с строки активной ячейки а потом если одна из ячеек следующей строки = ячейке из предедущей строкии снова вставлял в ворд документ заменяемие поля и снова делел замену, и так до момента когда одна из ячеек не будеть раван ячеике из следуищей, строки тогад макрос по ектому условию не вставляет заменяемие поля а просто сохраняет ворд документ. То есь допустим мне нужно создать документ ворд по одному из людей дание по которому есть в нескольких строках. Пожалста помогите очень нужно, просто нет денег на заказ.
Вова, в этом случае универсальное решение сделать не получится — уж слишком много возможных вариантов расположения данных в Excel, и способов заполнения документов Word.
Оформляйте заказ на сайте — сделаю для вас макрос под ваши требования.
Подскажите пожалуйста, как сделать так, чтобы макрос формировал один документ ворд на основании данных из нескольких строк Excel?
А как реализовать те же возможности, только используя функцию слияния в Word. Чтобы каждый новый раз не формировался новый документ а запись делалась на новой странице?
Теперь доступна новая версия универсальной программы формирования документов по шаблонам.
Программа очень удобна для быстрого создания договоров и приказов, заполнения актов и инструкций, печати писем и соглашений, заполнения путевых листов и извещений, распечатки протоколов и соглашений, подстановки данных в шаблоны заявлений и доверенностей.
Количество файлов-шаблонов (Word, Excel, TXT) неограничено.
Бесплатно скачать и протестировать программу можно по этой ссылке:
http://excelvba.ru/programmes/FillDocuments
Замечательно. Я, долгое время искал нечто подобное. Но к счасливой случайности вышел на Ваш сайт. Установил панели для VBA. И ещё коу-что. Практически разобрался в работе данного макроса. В VBA я, недавно. Но поставил перед собой задачу изучить его. Для этого я, решил составить программу для заполнения бланков аттестатов о среднем образовании и бланков дипломов об окончании ПТУ. До этого они заполнялись вручную. Задачу в Excel, я, программно решил, не безВашего в ней участия, некоторые фрагменты кода. У меня база заполняется посредством форм в виде развёрнутого аттестата. А, вот транспортировка данных в Word с листов — разворот и последняя страница. Как-то чуть-чуть не вяжется с общим видом программы. Нельзя-ли макрос транспортировки «засунуть» под форму? Если можно, то не смогли бы Вы посоветовать мне как это сделать. Делаю эту программу потому, что на Украине все мучаются с авторизованым заполнением бланков об окончании учебных заведений. А, так я бы мог бесплатно, это моё безусловное кредо, предоставить программу желающим. Заранее Вам благодарен. Помогая мне Вы помогаете и до того замордованым классным руководителям школ Украины.
можно ли по каждой записи сформировать 2 документа word?
Создание документа Word из Excel
Visual Basic | ||||||||||||||||||||||||||||||||||
Visual Basic | ||||||||||||||||||||||||||||||||
Visual Basic | ||||||||||||||||||||||||||||||
Visual Basic | ||||||||||||||||||||||||||||
Visual Basic | ||||||||||||||||||||||
30.12.2012, 18:13 | ||||||||||||||||||||||
Создание документа Word по шаблону из Excel Создание документа Word из таблицы Excel Добавление срок в таблицу Word при заполнении документа Word из данных Excel Сохранение документа Word из макроса Excel | ||||||||||||||||||||||
30.12.2012, 18:48 | 2 | |||||||||||||||||||||
bizard, в программе Word свойство Selection относится к объекту Window. У объекта Document нет свойства Selection.
|