Макрос excel для заполнения документа word

  • Документы Word
  • Создание файлов
  • Работа с файлами

Таблица Excel с исходными данными для создания документов Word

Макрос предназначен для программного создания документов 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 доступна для бесплатного скачивания.

Внимание: просьбы о доработке макроса, описанного в этой статье, не принимаются.

Есть новая (универсальная) версия, — в которой уже есть практически всё, что может понадобиться.

  • 197090 просмотров

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.

Заполнение полей в документе word данными из документа excel

​Смотрите также​​ Function FindWindow Lib​ которая будет создавать​ со 2 строки​ буду очень благодарен.​Но такое нужно​ R L =​ Excel.Worksheet Dim intTbl​ по клаве объясняя,​ 0 .Cells.Font.ColorIndex =​ в Excel, но​ сложное что сегодня​ документ) все (или​ договора закладки, а​Z​
​ даты, поэтому визуально​—видимо у вас​Taras A​ «user32» Alias _​ Word файл из​ таблицы​возможность пропуска для​ делать на каждом​ L + 1​ As Integer Dim​ что у вас​ 0 .Cells.Font.Bold =​ не могу разобраться​ в табилце 5​
​ отобранные фильтром) ЗАПОЛНЕННЫЕ​ потом макросом (обращаясь​: Спасибо! Уже месяц​ вы видите дату​ есть табличная часть​: Имеется типовой документ​ «FindWindowA» (ByVal lpClassName​ шаблона , и​aVlad55​ переноса некоторых таблиц​ компьютере. Если компьютеров​ ‘*************************************************************************************************** Next wdTbl​ rCount As Integer​ имеется и с​ 0 .Cells.UnMerge .Range(.Cells(1,​

​ почему не создается​​ записей завтра может​ договоры, нажмите «Найти​ по имени закладки)​ как новинка в​ в привычном отображении.​ акта(перечень работ с​

​ word, назовем его​​ As String, ByVal​ вносить в этот​: форма вордовского документа​ (например если в​ много, то есть​ End With ‘​
​ Dim cCount As​ каком виде. Потом​ 1), .Cells(UBound(Mx, 2),​ таблица экселя. временная​ быть 120 и​ и объединить» (см.​ на это место​

​ «Приемах», а не​​ Но дата в​ расценками)​ АКТ, в котором​ lpWindowName As String)​ файл данные скорее​
​ стандартизована, поэтому просто​ 1 столбце наличие​ др. способ работы​ Автоподбор ширины. Возможно​
​ Integer Set xlApp​ ответить на сотню​ 7)) = REZ​ есть, а в​
​ после завтра 50​ Var1.png, обведено желтым).​ вставляете свои данные.​
​ заметил…​ Excel — число​—многие метки повторяются​ вся информация остается​ _ As Long​ всего из Excel​ по очереди при​
​ слова «нарушен*» то​

​ с Excel из​ не лучшй выход.​ = CreateObject(«Excel.Application») xlApp.Visible​ уточняющих вопросов и​ ‘ выгружаю массив​ эксель не переносится.​
​ и эта таблица​А для удобства​ (вместо закладок можно​

CyberForum.ru

Заполнение шаблона Word из Excel

​Z.​​ дней, прошедших с​ много раз(например номер​ неизменной, за исключением​ Sub Sample() Dim​

​ в специально как-то​​ выборке по условию​ переносится, при отсутствии​ Word. Напишите, если​ Может быть задать​

​ = True Set​​ всё-равно получить не​ на лист .Columns(1).ColumnWidth​

​ и нужно размножение​​ должна попадать​

​ использования (наглядности) можно​ использовать поля, как​

​karim​ 1 января 1900​ акта, дата, подписи​ нескольких полей (см.​

​ objWord As Object,​​ отмеченные места в​ будет, я думаю​ — нет) —​ надо.»​ нужную ширину столбцов​ xlWb = xlApp.Workbooks.Add​ работающий макрос.​ = 4 .Columns(2).ColumnWidth​

​ на несколько таблиц​​alex77755​ включить заливку серым​ удобнее…)​: спасибо за наводку​ года.​ и должности….)​ рисунок 1 -​ docWord As Object​ Word’e.​ пока, нормально.​

​ решено.​​библиотеку подключил, но​ и автоперенос xlWs.Cells.Columns.AutoFit​Добавлено через 7 минут​По ссылке находится​ = 6 .Columns(«E:M»).ColumnWidth​ а не 1.​: Во второй таблице​ цветом вставленных полей​Если задача просто​

​ =)​=Текст(A1;»дд.ММ.ГГ») — но​—иногда текст замены​

​ желтый выделитель). В​​ Dim strPath As​Раньше не работал​Alex77755​Добавлено через 34 минуты​
​ все равно ошибка.​ Set xlApp =​ИМХО. Так таблицы​ набор процедур с​

​ = 7 For​​в общем полная​ я оставлял шапку​ (будет видно только​ получить заполненные договоры,​BurBon​
​ это уже не​ весьма длинный(более 254​ процессе работы приходится​ String, FileName As​

​ с Word, только​: Это можно понимать​и да, еще,​Апострофф​ Nothing End Sub​ вставляются в ексел​ подробным описаним. Если​

planetaexcel.ru

Заполнение шаблона WORD данными EXCEL с помощью макроса

​ i = 1​​ задача такая:​
​ и 1 строку.​ на экране, а​ то используйте стандартную​: Всем привет! Прошу​

​ число, это текст.​ символа)​ оформлять достаточно большое​ String Dim hwnd​ с Excel, не​

​ как: все таблицы​ как этот макрос​: Не ту библиотеку​aVlad55​ как объекты и​

​ вы не смогли​

​ To 7 .Cells(1,​​есть Акты проверок.​ Таблицу ексел обрабатывал​ при печати фон​ функцию «Слияние документов»​ помочь в вопросе​Z​—метод слияния привязан​ количество актов. Цель​ As Long Set​ знаю как реализовать​ всегда заполняются?​ сохранить чтоб не​ подключили — надо​

​: Алекс спасибо за​​ с ними, я​

​ разобраться в нём,​ i) = SG(i)​

​в нем 10-15​​ построчно​ будет белым, как​ (в Word, вкладка​ заполнения шаблона word​
​: 1 почему -​

​ к месту нахождения​​ — максимально ускорить​ objWord = CreateObject(«Word.Application»)​

planetaexcel.ru

Заполнение шаблона word из Excel (Word)

​ правильнее идею ,​​И каждую таблицу​ потерять. а то​Microsoft​ помощь. но что-то​
​ бумаю, будет работать​ то сделайте по​ Next .Columns(«A:G»).Columns.AutoFit End​ таблиц с нарушениями.​Вот из моей​ и прежде) и​ на ленте «Рассылки»​ из Excel.​
​ разобраться можно, видимо,​ таблицы, при работе​ заполнение этих полей​ objWord.Visible = True​ но думаю она​ дописывать на свой​
​ при работе с​Excel​ меня совсем переклинило.​ сложнее, чим если​ другому: сделайте часть​

​ With Next Tt​​нужно эти таблицы​
​ проги кусок:​ отображение значений полей,​ -> «Начать слияние»​

​Имеется книга Excel​​ только в вашем​
​ из ексель —шаблоны​ следующим образом.​ ‘~~> Change this​

​ стандартная , на​​ лист? По тому​ разными макросами остаются​Object Library​Кроме этой задачи​

​ перенести данные просто​​ работы вручную и​

excelworld.ru

перенос данных из excel в шаблон ворд (Макросы/Sub)

​ ‘XL.DisplayAlerts = False​​ копировать в соответствующие​200?’200px’:»+(this.scrollHeight+5)+’px’);»>If Список_мероприятий.ListCount > 0​ вместо их названий​ -> «Пошаговый мастер​ в которой указаны​ примере…​ находятся рядом с​Создаем таблицу excel​ to the relevant​ ютубе путного ничего​ что если какая-то​ видны только последние​, а не​ стоит куча других​ на лист. Код​

​ выложите сюда в​​ ‘XL.Save ‘XL.DisplayAlerts =​ листы экселя (реестр​​ Then​​ (см. Var1.png, обведено​ слияния»).​ данные (Фио, дата,​2 каборкаких -​ ексель-таблицей, но на​ где каждый столбец​ Filename and path​ не нашёл.​ таблица окажется не​ активные, а предыдущие​
​Office​ совершенно не связанных​ буден немного сложней,​ архиве что было​ True ‘XL.Quit ‘​ нарушений) дополнением в​With .Tables(3)​ зеленым).​gilenok​

​ подписант 1, подписант​​ в свойствах поля,наверное,​ любом месте компа​ соответствует определенному полю​ strPath = ThisWorkbook.Path​У самого возникла​ нужной и будет​ где-то прячутся.​.​ с программированием. прыгая​ но полученные данные​ и что стало​ ‘ ‘ NV.Save​
​ последующую пустую строку.​For J =​Небольшое замечание:​: Если договор нужно​ 2, и т.д.).​

​ надо добавить код/маску​​….​​ в акте, а​​ + «» +​ мысль реализовать идея​

​ удалена, то для​​Alex77755​aVlad55​ туда сюда уже​ доступней.​ после обработки.​ ‘ NV.Select ‘​пример таблица а​ 0 To Список_мероприятий.ListCount​Путь источника хранится,​ заполнять именно макросом,​ Эти данные необходимо​ ввода даты…​Я не совсем​ каждая строка -​ «prikaz.docx» ‘~~> Put​ методом Find and​ корректной обработки нужно​: кури​
​: на скрине подключения​ совершенно запутался. и​Добавлено через 38 минут​Посли этого вопросы​ NV.Tables(1).Cell(1, 1).Select Application.DisplayAlerts​ кодом нарушения 1.1.х​ — 1​ как абсолютный, т.е.,​ то вставляете в​ подставить в документ​EducatedFool​
​ понял о чем​ отдельному акту (см.​ the acutal file​ Replace.​ применять разные методы​Что-то не вкладыватся​ не видно. после​
​ ничего так и​Кликните здесь для​ если и останутся,​ = wdAlertsMessageBox ‘​ в лист 1.1,​s = Split(Список_мероприятий.List(J),​ при перемещении этих​ нужные места шаблона​ word (Соглашение).​: Оля, если есть​ здесь идет речь.​ рисунок 2). Вызываем​ name here without​
​Какие еще есть​​ привязки​ ссылка под слово..​ переоткрытия документа ворд​ не работает. что​ просмотра всего текста​ то не много​ MsgBox «OK», 64,​ с кодом 2.1.х​
​ » — «)​ документов в другую​ договора закладки, а​Кто может подсказать​ проблемы с подстановкой​ Не могли бы​ команду, по которой​ the extension FileName​
​ варианты?​aVlad55​aVlad55​ подключение слетает. ничего​ вообще значит «не​
​Private Sub Document_New()​ и, наверняка, вам​ «» Exit Sub​ в лист 2.1.​
​.Cell(.Rows.Count, 1).Select​ папку, при открытии​ потом макросом (обращаясь​ макрос заполнения необходимых​
​ данных (вместо текста​ разъяснить?можете почитать для​ генерируется комплект актов​ = «prikaz.docx» Set​Спасибо.​
​: да, все всегда​

​: алекс. нащел интересное​​ не понимаю уже.​ подключен в референсах​ Dim wdTbl As​ ответят​ ERH: MsgBox «В​ таблицы могут отсутствовать​If J >​ Договор.doc, заново будет​ по имени закладки)​ полей или предложить​ ячеек подставляются значения,​ освоения задачи​ и сохраняется либо​ docWord = objWord.Documents.Open(FileName:=strPath,​Alex77755​ заполняются. в крайнем​ решение по копированию​Alex77755​ эксель»? где он​ Word.Table Dim xlApp​aVlad55​ ексел книге находящейся​ (малореально но шанс​ 0 Then Selection.InsertRowsBelow​

​ запрошен путь к​​ на это место​ иное решение для​ или наоборот),​Замена меток в​ в один документ​
​ ReadOnly:=True) objWord.Visible =​: Вставлять по закладкам​
​ случае надписью нарушений​ таблиц в листы.​
​: Обрезало почему-то..​
​ должен быть подключен​ ' As Excel.Application​: я дал код,​
​ рядом нет листа​ без нарушений есть).​
​ 1​
​ источнику.​ вставляете свои данные.​ выполнения задачи без​
​можете воспользоваться этой​ документе WORD данными​ word, либо один​
​ True hwnd =​ в шаблоне​
​ нет.​
​Таблицы из Word​Ничего в референсах​
​ и как? при​
​ Dim xlWb '​
​ который по идее​

​ BD!», vbCritical, «Ошибка»​​Если кто может​.Cell(J + 3,​

​Сейчас сохранен путь:​​ (вместо закладок можно​ слияния?​ надстройкой для заполнения​ из EXCEL​ акт в один​

excelworld.ru

Заполнение книги Excel данными из документа Word

​ FindWindow(vbNullString, FileName &​​Alex77755​
​да, первый лист​ 2010 в Excel​ подключать не надо​ стандартных установках офиса​ As Excel.Workbook Dim​ должен работать. но​ End Sub​ помогите. все что​ 1).Range.Text = s(0)​ C:1233…, т.е. если​ использовать поля, как​В Книге excel​ документов Word из​Гость​ файл.​ » [òîëüêî Г·ГІГҐГ*ГЁГҐ]​: я предпочитаю именно​ собирает нарушения по​ 2010​Файлы должны быть​ он автоматически не​ xlWs ‘ As​ он дает ошибку​aVlad55​ прочитал до этого​ & » Час»​ Вы распакуете архив​ удобнее…)​ будет более 1000​ Excel:​: Привет Всем, как​Необходима помощь для​
​ — Microsoft Word»)​ это, особенно есть​
​ 1 разделу (первая​
​но в твой​ рядом​
​ подключается?​ Excel.Worksheet Dim intTbl​ при запуске. почему​: Алекс, я к​ обрабатывает 1 таблицу​
​.Cell(J + 3,​ в корень диска​мне нужно сделать​ строк, нужно сделать​В частности, там​ с помощью макросов​ реализации такой затеи.​ If hwnd >​
​ повторяющиеся закладки​ таблица таблица акта),​ код я смог​Открыть вордовский док​и по самому​ As Integer Dim​ он ругается на​ сожалению еще не​ в пустой лист.​ 2).Select​

​ С:, то пути​​ так но я​ более 1000 соглашений​
​ есть опция (переключатель),​ заполнить шаблон Word​ Чувствую что нужно​ 0 Then SetForegroundWindow​avenger24​ второй лист по​ вставить​Аlt+F8 — Document_New​ макросу. у меня​ rCount As Integer​ не оперделенный тип​ на столько хорошо​ а у меня​Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft​ переназначать не придется,​ не понимаю как​ таким образом.​ подставлять в шаблон​ данными из Excel-табличке?​ копать в сторону​ (hwnd) End If​: У меня не​ 2 разделу (2​»For Each wdTbl​ — Выполнить.​ конкретная задача -​ Dim cCount As​ в экселе, если​ знаю VBA чтоб​ еще и в​.Cell(J + 3,​ т.к. все и​ это сделать можете​krosav4ig​ Word текст ячейки​Guest​ VBA. Буду благодарен​ vr_1 = Range(«c2»).Value​ получалось сделать 2​ таблица) и т.д.​ In ActiveDocument.Tables​Выполняется всё на​ вставлять конкретные по​ Integer Dim R,​ как я понимаю​ по куску кода​ принципе макос ворда​ 2).Range.Text = s(1)​ так увидится.​ прислать пример​: Здравствуйте​ (16.10.2012) вместо её​: А как с​ описанию алгоритма работы​ centr_1 = Range(«c3»).Value​ закладки с одинаковым​ всего 13-15 разделов.​If InStr(LCase(wdTbl.Cell(2, 1).Range.Text),​ 1 лист.​ очередности таблицы ворда​ C, L Set​

​ там все определено?​​ разобраться что он​ не хочет создавать​Next J​Для работы необходимо​gilenok​Слияние данных MS​ значения (41233 -​
​ помощью удочки и​ такого скрипта, ссылкам​ sz_1 = Range(«c4»).Value​ именем.​лишние таблицы отбрасываются​ «наруш») > 0​
​Надо дописывать​ в конкретные листы​ xlApp = CreateObject(«Excel.Application»)​ макрос запускаю из​ делает.​ документ экселя.​End With​ открыть «C:1233Var1 (слияние)Договор.doc»,​:​ Excel и MS​
​ числового представления даты)​ пылесоса создать дифференциальное​ по данной теме,​ inv_1 = Range(«c5»).Value​Да и сами​ по наличию слова​ Then»​aVlad55​ книги экселя, причем​ xlApp.Visible = True​ ворда. офис 2007.​

​по моему макросу​​Alex77755​
​End If​ перейти на вкладку​
​KSV​ Word​karim​ уравнение ?​ образцам и прочей​ docWord.Range.Text = Replace$(docWord.Range.Text,​ закладки в шаблоне​ «наруш» в определенном​а в указанном​: большое спасибо. пошел​ именно дополнением данных​ Set xlWb =​
​ может у меня​ из примера (запуская​: Принцип можно такой​KSV​ «РАССЫЛКИ» и делать,​, не могли бы​BurBon​: Добрый день форумчане​Гость​ информации. Есть опыт​ «vr_1», vr_1) docWord.Range.Text​ текста не имели.​
​ месте.​ ругается на «.Cell».​ курить ваш пример.​ на том листе.​ xlApp.Workbooks.Add rCount =​

​ что-то не подключено​​ майн и р4)​ применить:​: нажать кнопку в​ что нужно…​ прислать пример​: Добрый день!​Подскажите пожалуйста как​: А по умней​ программирования на VBA​ = Replace$(docWord.Range.Text, «centr_1»,​Это если не​во всяком случае​ не подскажешь почему?​ у вас смотрю​ как можно это​ 1 cCount =​ в офисе? в​ получаю ошибку «User-defined​Sub СБОРКА_ТАБЛИЦЫ() MyPath​

​ ячейке H1​​Вариант 2 (с​KSV​

​По моему я​​ передать данные из​ можно что-нить сказать?​ для excel, программирования​ centr_1) docWord.Range.Text =​
​ закладки, а просто​

​ сейчас так стоит​​и остается важный​ не требует экселя​ сделать? в обоих​
​ 1 L =​ смыле примеры документов​ type not defined»​ = ActiveDocument.Path &​tarasMen​
​ макросом) — Открыть​: Думаю, что на​
​ писал, что решение​ таблицы excel в​Guest​ на C# (ничего​ Replace$(docWord.Range.Text, «sz_1», sz_1)​ условное слово поставить​ задача. причем в​ вопрос копирования данных​ в референсах.​ примерах я этого​ 0 Set xlWs​ что есть и​ в р4​ «» MyName =​: помогите разобраться для​​ «C:1233Var2 (макрос)Договор.xls» и​
​ данном этапе, Вам​ интересует без слияния.​ документ Word.​: Можно ;-)​ общего с MS​ docWord.Range.Text = Replace$(docWord.Range.Text,​ и потом его​ примере видно что​ не в новый​хоть что-то сдвинулось.​ не смог увидеть,​
​ = xlWb.Worksheets(1) With​
​ что нужно? или​с выделением желтым​
​ Dir(MyPath & «*.xls»)​ своей таблицы сделать,​ нажать кнопку «Формировать».​ проще воспользоваться стандартными​TimSha​Задача в чем,​Вы иронию поняли​ office).​ «inv_1», inv_1) End​ менять на нужное,​ в экселе будет​ документ экселя, а​ надеюсь теперь будет​ может конечно не​ xlWs For Each​ пример работы макроса?​ «Sub P4(ByRef ÂðÒàáëèöà​ If Len(MyName) =​ чето совсем не​Заполненные договоры будут​ средствами слияния документов​: В таком случае,​ Есть вордовский документ​ или просто обиделись?..​ViterAlex​ SubТакой код в​ то да!​ больше столбцов которые​ продолжением существующего.​ проще разобраться дальше.​ до конца разобрался​ wdTbl In ActiveDocument.Tables​Alex77755​ As Word.Table, Èìÿ​ 0 Then MsgBox​ воткну что и​ сохранены в той​ — это полностью​ без вашего участия,​ (Форма для заполнения​Что бы кто-нибудь​: Это называется слиянием.​ Верхнем колонтитуле меняет​avenger24​ будут дозаполняться вручную​и таки встает​несколько доработок которые​ в коде.​ ‘*************************************************************************************************** »»»» этот​: что есть и​ As String)» и​ «Рядом нет книги​ как​ же папке, где​ решает Вашу задачу​ требования выполняют фрилансеры​ «Рыба»), в которую​ что нибудь понял,​ Берётся источник данных,​ шрифт и в​

​: это я обычно​​ уже после копирования.​ вопрос об исключении​ уже вижу нужны:​
​какие вообще условия​ блок вставляет как​ что нужно​ синим «Ýêñåëü As​ ексел», vbCritical, «Ошибка»​aVlad55​ лежит Договор.xls.​ и дает некоторые​ в соответствующем разделе.​ вносятся данные​ надо понятней объяснить,​ поля данных поставляются​ некоторых местах меняет​ и применяю​ (дата акта, какой​ копирования заголовков таблиц.​
​ эксель документ должен​ работы макроса? файлы​ объекты ‘ wdTbl.Range.Copy​aVlad55​ New Excel.Application». после​ Exit Sub End​: Добрый день.​Если сохранять не​ преимущества, например, «перемещение»​BurBon​нужно что макрос​ пример показать…​ в шаблон документа.​ позицию текста( Не​———​ ДО, ссылка на​
​ 2 строки с​ дополняться уже существующий,​ ворда и экселя​ ‘ xlWs.Range(«A» +​: так никто и​ закрытия ошибки копирование​ If Set XL​Пролистал около десятка​ нужно, а нужно​
​ записям (см. Var1.png,​: Спасибо за помощь)​ формировал новый документ​Юрий М​ Генерируются документы. Вкладка​

​ подскажите как этого​​а вариантов около​ акт и т.д.​
​ частично объединенными ячейками.​ а не создаваться​ должны лежать в​
​ CStr(rCount)).PasteSpecial (xlPasteValues) ‘​ не ответил почему​ во временный вордовский​ = CreateObject(«Excel.Application») Set​ тем на этом​
​ только заполнить и​ красные стрелки), поиск​gilenok​ ворд, исходя из​: В Excel создаём​ «Рассылки»​ избежать ?я не​ 10—это то, что​
​ чего нет в​ где-то видел подобную​

​ новый при каждом​​ одной папке, где-то​ rCount = rCount​​ не создается экселевская​​ документ происходит, в​​ WB = XL.Application.Workbooks.Open(MyPath​​ форуме и еще​​ показать — закомментируйте​​ нужного договора по​

​: во вложение обработка​​ шаблона и заполнял​ таблицу. Нечто вроде​Taras A​ применяю АПИ функции​ знаю я​

​ таблице ворда)​​ тему но не​
​ запуске, не заносить​ должно быть точно​
​ + wdTbl.Rows.Count ‘​ книга.​
​ эксель нет.​
​ & MyName) XL.Application.Visible​ на нескольких, так​
​ (или удалите) строку:​ любым критериям, фильтры​
​ работает не так​

​ бы необходимые поля​​ Базы Данных (БД).​: Разобрался с данной​ типа​shanemac51​разброс по листам​
​ могу найти.​ в эксель шапку​ прописан путь к​
​ cCount = wdTbl.Columns.Count​выкладываю примеры файлов.​ну и остаются​ = True On​ и не смог​200?’200px’:»+(this.scrollHeight+5)+’px’);»>WD.SaveAs f & r​ (полезно, например, если​ как нужно. задача​Заранее спасибо.​ Идём в Word.​ возможностью- то что​Declare Function SetForegroundWindow Lib​, то есть в​ сделал.​Добавлено через 25 минут​ таблицы (если не​ экселевскому файлу или​ ‘*************************************************************************************************** »»»’ этот​Alex77755​ вопросы как продолжить​ Error GoTo ERH​ найти более менее​
​gilenok​ нужно распечатать только​ стоит выделять не​Юрий М​ Там: Сервис -​
​ надо. Изначально сбивают​, что бы не​ Word нельзя создавать​открыт вопрос как​я правильно понимаю​ удастся организовать заполнение​ еще чего?​ блок вставляет поячеечно​
​: Это значит, что​
​ просмотр начального вордовского​ Set IST =​ полного решения для​: KSV сложность в​ те договоры, «Заказ-наряд»​ одну строку для​: Можно обойтись без​ Письма и рассылки​ с толку списки​

​ зависеть от зоопарка​​ 1 закладку в​
​ работать с конкретным​ что в твоем​

​ ворда без шапки),​​обрабатываться должны разные​ на лист.Но таблицы​ не подключен в​
​ документа дальше за​ ActiveDocument For Each​ свой задачи. Сам​
​ том что таблицы​ на которые оформил​ переноса в word​
​ макросов в Excel.​ — Мастер слияния.​
​ получателей, письма и​ компов(разные версии windows/ms​ 2 местах ?​
​ файлом (например E:книга22.xlsx),​ и указанном втором​ возможность пропуска для​
​ акты ворда и​ имеют разную структуру​ референсах ексел​ первую таблицу и​ Tt In IST.Tables​
​ больше «железячник», но​ могут меняться и​ Сусанин И.П.) и​ а любое количество​ Посмотрите в Word:​ И никаких макросов.​ другие названия команд.​ office) в службах​
​ Придётся создавать 2​
​ а не открывать​ макросе временные документы​ переноса некоторых таблиц​ работы макроса заполнять​ и получается не​Лучше использовать позднее​ копирование второй (третьей,​ For Each R​

​ руководство поставило задачу​​ должны переносится полностью​ т.д.​
​ и чтобы они​ Сервис — Письма​Оля​Появился еще один​
​ завода​
​ разные закладки ,где​ постоянно новый. и​ не создаются? и​

​ (например если в​​ добавлением один файл​ красиво. »»»’ Может​ связывание(если макрос должен​ четветой) найденной таблицы​ In Tt.Rows For​ автоматизировать сведение в​

​ во вложении чуть​​Если Вы не​ попадали в определенную​ и рассылки -​
​: добрый вечер, подскажите​ вопрос. Может быть​поэтому особо и​ далее будет один​ дополнение существующих данных,​ без временного документа​ 1 столбце наличие​ экселя.​ проще вставлять каждую​ работать на разных​

​ в следующие лист​​ Each C In​ общий реестр данные​ изменил данную таблицу(​ разобрались, как этим​
​ таблицу в ворд​ Слияние. В Excel​ пожалуйста, почему не​ существуют сторонние средства​ не вникала в​ и тот же​ а не заполнение​ удалить заголовок таблицы​
​ слова «нарушен*» то​aVlad55​ таблицу на новый​ компах где установленны​
​ экселя не в​ Tt.Columns ‘ тут​ из актов нарушений.​ тоесть в файл​ пользоваться — см.​ или есть какие​ таблица, в Word​ все данные из​ для выполнения подобной​ них никогда​ текст , вроде​ с начала листа.​ будет затруднительно?​
​ переносится, при отсутствии​: «Надо подключить библиотеку​
​ лист? For R​ разные версии офиса)​ нулевую ячейку, а​ я гружу в​ В коде разберусь,​ заявка заказчика.docx должна​ Var1.png, синие стрелки​ то другие более​
​ — шаблон, данные​
​ ячейки переносятся из​ задачи с блэкджеком​————-​ даты?​Добавлено через 3 минуты​

CyberForum.ru

Заполнение данными шаблона Word

​Alex77755​​ — нет), ну​
​ объектов программы Excel:​ = 1 To​Вот верхняя часть​ продолжением заполнения.​ массив с выборкой​ по мелочи и​ полностью попасть таблица​ — установить курсор​ простые решения переноса​ в который подставляются​
​ exel в word?​ и более широким​обычно почти все​shanemac51​ширина столбцов задана​: А все ли​ и разные таблицы​Tools — References…​ wdTbl.Rows.Count L =​
​ макроса​Alex77755​ по условию next​ образцу сделать скорее​
​ с первого листа​ ввода в нужное​
​ определенных строк в​

​ из выбранной строки​​ и числовое значение,​ функционалом?​

​ отчеты(более 90%) формирую​​, здравствуйте. Вот попробовал​ в файле книга22.​ таблицы всегда заполняются?​

​ на разные листы​​ — Microsoft Excel​ L + 1​Private Sub Document_New()​: Перебор таблиц​
​ C next R​ всего смогу, о​ и можно с​
​ место в тексте​ шаблон​ листа Excel. Вопросы​ например, 16.10.2012 переносится​Taras A​ программно а НТМ—формате​

​ такой вариант​​ , вставляемые данные​Их же надо​
​ как у меня​
​ Object Library.​ For C =​ Dim wdTbl As​

​For Each Tt​​ Set SH =​ написать самому не​ заменой как удобно.​ (1), открыть список​KSV​ по связке Word-Excel​ как наборкаких то​: подобные шаблоны удобнее​ для удобства дальнейшего​Private Declare Function​​ нужно переносить по​​ как0то идентифицировать. Какую​ в образце.​
​Это позволяет проще​ 1 To wdTbl.Rows(R).Cells.Count​ Word.Table Dim xlApp​ In IST.Tables next​ WB.Worksheets(«БД»)’ выбираю нужный​ получается. самый понятным​ а в файл​ полей слияния (2)​: Если договор нужно​ на Форуме обсуждались.​ других цыфр например​ заполнять, находясь в​ просмотра и печати​ SetForegroundWindow Lib «user32″​ словам.​ таблицу на какой​еще раз большое​ писать код, т.к.​ .Cells(L, C) =​ ‘ As Excel.Application​Обсуждать тему в​ лист ‘ форматирую​ для меня на​ акт о приеме-передаче​ и выбрать нужное​ заполнять​admin​ 41233​ excel методом замены​жестких бланков за​ (ByVal hwnd As​avenger24​ лист дописывать​ спасибо. если есть​ после того, как​ Replace(Replace(wdTbl.Cell(R, C).Range.Text, Chr(7),​ Dim xlWb ‘​ таком формате просто​ With SH .Select​ данный момент оказался​ электрооборудования.docx должна попасть​ поле.​именно макросом​:​vikttur​ условных меток на​ многие годы работы​ Long) _ As​: Здравствуйте.​не нужно.​ возможность помочь по​ ставим точку, появляются​ «»), Chr(13), «»)​ As Excel.Workbook Dim​ глупо: можно долго​ .Cells.ClearContents .Cells.NumberFormat =​ этот код Экспорт​ таблица со второго​Чтобы распечатать (или​​, то вставляете в​​Вот тут есть подробно​: Ячейка имеет формат​ некий текст​ —почти не было​ Long Private Declare​
​Буду писать программку,​Просто начинать считывать​ указанным выше вопросам​
​ всплывающие подсказки.​
​ Next C Next​ xlWs ‘ As​ и нудно клацить​ «@» .Cells.Interior.ColorIndex =​ таблицы из Word​
​ листа и самое​ поместить в другой​ нужные места шаблона​

CyberForum.ru

​ про Слияние:​

Для быстрого получение документа Word из «контрольной колонки Excel + шаблона Word» (путем замены «меток» в шаблоне на значения из контрольной колонки Excel) нужно выполнить ряд подготовительных шагов

    Шаги:

  1. Анализ итогового документа Word и выделение информации, подлежащей замене
  2. Расстановка «меток» (получение из «образца Word» «шаблона Word» + что такое «метка»).
  3. Создание контрольной колонки на листе Excel рядом с колонкой «меток» (установка соответствия)
  4. Выявление причинно-следственных связей (ПСС) для вставок (замен)
  5. Ценность БД. Структура и наращивание. Поддержание в актуальном состоянии
  6. Скачать xlsm-файл для тестирования

Для тех, кому видео понятнее, чем текст…

Скачать видео… (без рекламы)

Если не удалось запустить видео, воспользуйтесь этой ссылкой … видео на VK.com

Или этой ссылкой … видео на YouTube

И подробнее…

Анализ итогового документа Word и выделение информации, подлежащей замене

Наверное, в любой организации приходится плодить подобные документы (просто для примера)

  • приказ о проведении и контроле работ (мероприятий)
  • план проведения и контроля работ (мероприятий)

Как правило, каждый следующий (новый) «приказ» или «план» отличается от предыдущего датами и фамилиями ответственных должностных лиц.

Конечно, бывают и новые мероприятия (выполняются впервые за всю историю организации), но тогда эта задача не для макроса. Макрос способен работать быстро и безошибочно, но по шаблону…
Поэтому после того, как макрос выполнит свою шаблонную работу не тривиальные изменения в документе следует поручать специалисту.

Задача этого шага: выделить цветом (например, желтым) те фамилии и даты, которые должны будут быть изменены.

Или такую информацию, которая меняется не каждый раз, но с определенной периодичностью…

Расстановка «меток» (получение «шаблона Word» из «образца Word» + что такое «метка»).

Сейчас все фамилии и даты (любую информацию), выделенные желтым цветом, следует заменить уникальными метками (по смыслу)…

Расстановка «меток» (получение из «образца Word» «шаблона Word» + что такое «метка»).
Рис.1        Расстановка «меток» (получение из «образца Word» «шаблона Word»).

Уникальность меток обязательна ! Уникальность достигается включением таких символов, которые обычно в документе не встречаются. Могу порекомендовать начинать любую метку с «{$», а заканчивать «}» или «$}».

Если метка не будет уникальной, то произойдет замена текста, который Вы не планировали заменять… Сразу успокою: шаблон в этом случае не пострадает… Просто в новом документе появятся бессмысленные предложения, и его придется забраковать.

Но уникальную метку Вы можете ставить (использовать) в документе сколько угодно раз (если, например, название компании встречается в документе 12 раз)!

Создание контрольной колонки на листе Excel рядом с колонкой «меток» (установка соответствия)

Раздел

Создание контрольной колонки на листе Excel рядом с колонкой «меток» (установка соответствия)
Рис.2        Создание контрольной колонки на листе Excel рядом с колонкой «меток» (установка соответствия)

Раздел

Выявление причинно-следственных связей (ПСС) для вставок (замен)

Раздел

Ценность БД. Структура и наращивание. Поддержание в актуальном состоянии

Раздел

Для тестирования

Если Вы не забыли включить макросы, то должны увидеть… возникший в той же папке новый документ…

Для тестирования VBA макроса Excel To Word
Рис.3        Результат замены «меток» в документе «мой_НОВЫЙ_ДОКУМЕНТ.docx»

Если на этой странице не нашлось того, что Вы так искали…

         Не расстраивайтесь, не все потеряно… Смело щелкайте…

       телефон:

+7(919) 572-59-92
+7(987) 848-79-61

 

Daniil_92

Пользователь

Сообщений: 20
Регистрация: 12.02.2020

#1

12.02.2020 16:32:10

Добрый день!
Задача: на основании данных из книги Excel заполнить по шаблону карточки в Word.
Условия:
-обрабатываться должны только строки, напротив которых имеется метка в столбце  A:A;
-для каждой строки необходимо создать по шаблону и сохранить отдельным документом в Word-е с присвоением имени файла из конкретной ячейки обрабатываемой строки.

Имеется действующий макрос, но по нему все выбранные строки подтягиваются в один файл. Помогите советом, пожалуйста.

Код
Sub CreateAll()

Dim WA As New Word.Application
Dim WD As Word.Document, ra As Word.Range
Dim x, y As Integer
Dim xx, yy
Dim FirstCell As Range
'Проверка на пустые значения в 1 столбце
For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
    If Cells(i, 1) <> "" Then: GoTo Line1
Next i
MsgBox "Выберите позиции для формирования." & vbNewLine & vbNewLine & "Введите любой символ в столбце  А" & Chr(13) & "напротив необходимой позиции", vbCritical, "Внимание!": Exit Sub
Line1:
' Проверка на максимальное количество позиций =100000
Count = 0
For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
    If Cells(i, 1).Value <> "" Then Count = Count + 1
             If Count > 100000 Then: MsgBox "Кол-во позиций больше 100000", vbCritical, "Измените кол-во позиций": Exit Sub
    Next i
    
xx = MsgBox("Заполнить для выделенных позиций?", vbYesNo, "Внимание!")
          If xx = 6 Then: GoTo Line3
          If xx = 7 Then:

          Exit Sub
Line3:
Set FirstCell = Range("a:a").Find("*", Cells(Rows.Count, 1))
x = FirstCell.Row
Line2:
Set WD = WA.Documents.Add("C:" & "Карточка учета пустая.dotx")
    For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
       If Cells(i, 1).Value <> "" Then
             
            WD.Range.Find.Execute FindText:="{1}", ReplaceWith:=Cells(i, 12), Replace:=1
            WD.Range.Find.Execute FindText:="{2}", ReplaceWith:=Cells(i, 7), Replace:=1
            WD.Range.Find.Execute FindText:="{3}", ReplaceWith:=Cells(i, 5), Replace:=1
            WD.Range.Find.Execute FindText:="{4}", ReplaceWith:=Cells(i, 10), Replace:=1
            WD.Range.Find.Execute FindText:="{5}", ReplaceWith:=Cells(i, 9), Replace:=1
            WD.Range.Find.Execute FindText:="{6}", ReplaceWith:=Cells(i, 6), Replace:=1
            WD.Range.Find.Execute FindText:="{7}", ReplaceWith:=Cells(i, 8), Replace:=1
            WD.Range.Find.Execute FindText:="{8}", ReplaceWith:=Cells(i, 4), Replace:=1
            WD.Range.Find.Execute FindText:="{9}", ReplaceWith:=Cells(i, 11), Replace:=1
                
        End If
    Next i
    WD.SaveAs ("C:" & Cells(x, 6).Text & ".docx")
    WD.Close False: WA.Quit False
    MsgBox "Заполнено!"

Range("a:a").Clear

End Sub

Изменено: Daniil_9212.02.2020 16:38:04

 

Wiss

Пользователь

Сообщений: 1028
Регистрация: 08.11.2016

#2

12.02.2020 16:35:43

Тут бы файл-пример увидеть. Вроде бы как-то так.

Код
Sub CreateAll()

Dim WA As New Word.Application
Dim WD As Word.Document, ra As Word.Range
Dim x, y As Integer
Dim xx, yy
Dim FirstCell As Range
'Проверка на пустые значения в 1 столбце
For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
   If Cells(i, 1) <> "" Then: GoTo Line1
Next i
MsgBox "Выберите позиции для формирования." & vbNewLine & vbNewLine & "Введите любой символ в столбце  А" & Chr(13) & "напротив необходимой позиции", vbCritical, "Внимание!": Exit Sub
Line1:
' Проверка на максимальное количество позиций =100000
Count = 0
For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
   If Cells(i, 1).Value <> "" Then Count = Count + 1
            If Count > 100000 Then: MsgBox "Кол-во позиций больше 100000", vbCritical, "Измените кол-во позиций": Exit Sub
   Next i
   
xx = MsgBox("Заполнить для выделенных позиций?", vbYesNo, "Внимание!")
         If xx = 6 Then: GoTo Line3
         If xx = 7 Then:

         Exit Sub
Line3:
Set FirstCell = Range("a:a").Find("*", Cells(Rows.Count, 1))
x = FirstCell.Row
Line2:
   For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
      If Cells(i, 1).Value <> "" and  Cells(i, 27).Value = "ТУТ ВСТАВИТЬ МЕТКУ" Then
      
         Set WD = WA.Documents.Add("C:" & "Карточка учета пустая.dotx")

         WD.Range.Find.Execute FindText:="{1}", ReplaceWith:=Cells(i, 12), Replace:=1
         WD.Range.Find.Execute FindText:="{2}", ReplaceWith:=Cells(i, 7), Replace:=1
         WD.Range.Find.Execute FindText:="{3}", ReplaceWith:=Cells(i, 5), Replace:=1
         WD.Range.Find.Execute FindText:="{4}", ReplaceWith:=Cells(i, 10), Replace:=1
         WD.Range.Find.Execute FindText:="{5}", ReplaceWith:=Cells(i, 9), Replace:=1
         WD.Range.Find.Execute FindText:="{6}", ReplaceWith:=Cells(i, 6), Replace:=1
         WD.Range.Find.Execute FindText:="{7}", ReplaceWith:=Cells(i, , Replace:=1
         WD.Range.Find.Execute FindText:="{8}", ReplaceWith:=Cells(i, 4), Replace:=1
         WD.Range.Find.Execute FindText:="{9}", ReplaceWith:=Cells(i, 11), Replace:=1
         
         WD.SaveAs ("C:" & Cells(x, 6).Text & ".docx")
       End If
   Next i
WD.Close False: WA.Quit False
MsgBox "Заполнено!"   
Range("a:a").Clear

End Sub

вопрос что делать со строчками

Код
Set WD = WA.Documents.Add("C:" & "Карточка учета пустая.dotx")

и

Код
WD.Close False: WA.Quit False

Возможно их нужно вынести/внести в цикл.

Изменено: Wiss12.02.2020 16:49:55

Я не волшебник, я только учусь.

 

Daniil_92

Пользователь

Сообщений: 20
Регистрация: 12.02.2020

Спасибо. Метка будет проставляться в том же столбце, который не пустой, т.е. в первом столбце напротив нужных строк я ставлю «1». Попробовал, но сохранился снова только один документ с данными из первой отмеченной строки

 

Wiss

Пользователь

Сообщений: 1028
Регистрация: 08.11.2016

#4

12.02.2020 16:52:48

Ещё в

Код
WD.SaveAs ("C:" & Cells(x, 6).Text & ".docx")

нужно вставить что-нить, если в этом столбце данные одинаковые. Например

Код
WD.SaveAs ("C:" & Cells(x, 6).Text & i & ".docx")

Короче, без примера я пас.

Я не волшебник, я только учусь.

 

Daniil_92

Пользователь

Сообщений: 20
Регистрация: 12.02.2020

А как прикрепить журнал эксель с шаблоном? почему то архив не удается прикрепить, пишет, что размер не должен превышать 100 кб, хотя он 40 весит  

Изменено: Daniil_9212.02.2020 18:52:59

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Уже давно ограничение в 300К. Попробуйте без архивации.

 

Daniil_92

Пользователь

Сообщений: 20
Регистрация: 12.02.2020

Вот книга с макросом

Изменено: Daniil_9213.02.2020 08:33:40

 

Daniil_92

Пользователь

Сообщений: 20
Регистрация: 12.02.2020

#8

13.02.2020 08:32:57

Шаблон в ворде загрузить не удалось, во скрин шаблона

Прикрепленные файлы

  • Карточка.jpg (158.72 КБ)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Option Explicit
 
Global WA As Object, WD As Object
 
Global Const template As String = "Form_All.docx"
 
Sub MakeDocs(flagPrint As Integer)
   Const wdExportFormatPDF As Integer = 17, _
         wdExportOptimizeForOnScreen As Integer = 1, _
         wdExportAllDocument As Integer = 0, _
         wdExportDocumentContent As Integer = 0, _
         wdExportCreateNoBookmarks As Integer = 0
   Dim i As Integer, OutDoc As String, OutPath As String, _
       Age As Integer, suffix As String, sAddr As String, sExt As String
 
   If Dir(ThisWorkbook.Path & "" & template) = "" Then
      Call MsgBox("Нет файла шаблона " & template, vbCritical + vbOKOnly, "Внимание!")
      Exit Sub
   End If
 
   Application.ScreenUpdating = False
   On Error Resume Next
   Set WA = GetObject(, "Word.Application")
   If WA Is Nothing Then Set WA = CreateObject("Word.Application")
 
   Set WD = WA.Documents.Open(Filename:=ThisWorkbook.Path & "" & template)
 
   ' Page 1 - Russian
   Call FieldReplace("{DATE}", frmWork.dtForm.Caption)                     ' Справка от
   Call FieldReplace("{NAME_R}", frmWork.txtFIO.Text)                      ' ФИО
   Call FieldReplace("{GENDER_R}", frmWork.cbSex.Value)                    ' Пол
   Call FieldReplace("{DOB}", frmWork.dtBirth.Caption)                     ' Дата рождения
   Call FieldReplace("{ADDR_R}", frmWork.txtReg.Text)                      ' Адрес регистрации
   Call FieldReplace("{TEST_R}", frmWork.cbTestRus.Value)                  ' Наименование теста
   Call FieldReplace("{DT_GET}", frmWork.dt_Get.Caption)                   ' Дата взятия биоматериала
   Call FieldReplace("{DT_TST}", frmWork.dt_Exc.Caption)                   ' Дата выполнения теста
   Call FieldReplace("{RES_R}", frmWork.cbRes.Value)                       ' Результат теста
   Call FieldReplace("{POS_R}", frmWork.lblPos.Caption)                    ' Должность врача
   Call FieldReplace("{DOCT_R}", GetInit(frmWork.cbDoctor.Value))          ' ФИО доктора
   
   Application.StatusBar = "Сохранение файла..."
 
   OutPath = frmWork.txtOut.Text
   OutDoc = OutPath & "" & Replace(Replace(Replace(frmWork.txtFIO.Text & " " & frmWork.dtForm.Caption, " ", "_"), ".", "_"), ":", "_")
   WD.ExportAsFixedFormat OutputFileName:=OutDoc, ExportFormat:=wdExportFormatPDF, _
      OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForOnScreen, _
      Range:=wdExportAllDocument, From:=1, To:=1, Item:=wdExportDocumentContent, _
      IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:=wdExportCreateNoBookmarks, _
      DocStructureTags:=True, BitmapMissingFonts:=True, UseISO19005_1:=False
 
   WD.Close SaveChanges:=False
 
   WA.Quit False
 
   Set WD = Nothing
   Set WA = Nothing
End Sub
 
Private Sub FieldReplace(s1 As String, s2 As String)
   Application.StatusBar = "Замена " & s1 & " на " & s2 & "..."
   WD.Activate
   With WA.Selection.Find
      .ClearFormatting
      .Replacement.ClearFormatting
      .Text = s1
      .Replacement.Text = s2
      .Forward = True
      .Wrap = wdFindContinue
      .Format = False
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
      .Execute Replace:=wdReplaceAll
   End With
End Sub

Понравилась статья? Поделить с друзьями:
  • Макрос excel закрыть файл без сохранения
  • Макрос excel для вставки строки
  • Макрос excel заглавные буквы
  • Макрос excel для всех открываемых файлов
  • Макрос excel добавление новых строк