Доброго дня! Граждане, подскажите, пожалуйста, в каком направлении двигаться. Есть список людей: ФИО, № приказа. (Excel) Также есть доп. соглашение к трудовому договору (Word)
На данный момент выполнил слияние и получил документ Word, в который подставляются данные из Excel. На вкладке "Слияние" переключаемся стрелками, данные меняются, всё ок. Но, по ряду причин такой способ не совсем подходит. Можно ли сделать немного наоборот: добавить в каждую строку Excel-файла "волшебную кнопку", по нажатии которой данные из текущей строки (ФИО, № приказа) будут подставлены в документ Word (доп соглашение).
Sub OpenAct()
Dim WA As Object, WD As Object
Rect = MsgBox(prompt:="заполнить акт " & Cells(4, 4).Value, Title:="Запрос", Buttons:=vbYesNo)
Select Case Rect
Case Is = vbNo
End
Case Is = vbYes
Set WA = CreateObject("Word.Application")
Set WD = WA.Documents.Open(ThisWorkbook.Path & "\Акт.doc")
WD.Range.Find.Execute FindText:="[#Dog#]", ReplaceWith:=Cells(12, 4) ' номер договора
WD.Range.Find.Execute FindText:="[#DataDog#]", ReplaceWith:=Cells(14, 4) ' дата договора
WD.Range.Find.Execute FindText:="[#DataAct#]", ReplaceWith:=Cells(16, 4) ' дата акта
WD.Range.Find.Execute FindText:="[#Work#]", ReplaceWith:=Cells(20, 2) ' наименование услуг
WD.Range.Find.Execute FindText:="[#SUMM#]", ReplaceWith:=Cells(24, 4) ' сумма прописью
WD.Range.Find.Execute FindText:="[#FIO#]", ReplaceWith:=Cells(4, 4) ' ФИО
WA.Visible = True
End Select
End Sub
Юрий, ведь явно будет проблематично выложить и шаблон документа Word и "базу" (файл Excel). вроде ясно описали ситуацию, что через слияние всё сделано. я и сам давно это уже делал (слияние). потом понял, что пользователи не умеют этим инструментом работать. пришлось переделывать через "замену". вот и выложил готовое решение.
Если помогаете в теме с таким нарушением - сами предлагайте адекватное название. Посетителю помогаете, модераторам свинью подсовываете: автор получил решение и ушел, модератору после этого придется вникать в тему и переименовывать ее
в таблице excel доп. колонку Печатать и 1 у всех строк которые нужно отпечатать затем: 1. слияние позволяет сливать данных из строк по условию (пишете где Печатать = 1) 2. В Excel сортируете данные по колонке Печатать, в Word пишете слить на принтер с 1 по 724 (сколько единиц в колонке Печатать) в обоих случаях нет необходимости щелкать по одной и печатать по 1, а делается это одной командой слить... проставить 1 - это нисколько не дольше, чем прощелкать кнопки Печатать на нужных строках (а с учетом, что эти кнопки еще нужно разместить, каждой назначить макрос и собственно написать сам макрос - вариант с доп.колонкой и единичками в ней - гораздо быстрее в реализации. удачи!
rjk написал: Имеется в виду печать определённого диапазона страниц
имеется в виду, что щелкая в Word следующий, следующий... Вы видите один и тоже документ заполненный все новыми и новыми данными, если после каждый следующий, Вы жмете файл, печать, ок... то все эти "следующмй", "файл", "печать", "Ок" можно заменить одним комплексным действием "слить на печать" строки с 1 по 321. все! 321 документ ушли на печать! Пейте чай, следите чтобы в принтер добавить бумагу после полного опустошения лотка.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Господа, на выходных буду пробовать оба варианта. По ходу пьесы буду отписываться о результатах. На первый взгляд для решения задачи подходят оба. kalmar, Ігор Гончаренко, Благодарю за ответы!