Страницы: 1
RSS
Автоматизация подготовки однотипных документо Word с заполнением из таблицы Excel
 
Доброго дня!
Граждане, подскажите, пожалуйста, в каком направлении двигаться.
Есть список людей: ФИО, № приказа. (Excel)
Также есть доп. соглашение к трудовому договору (Word)

На данный момент выполнил слияние и получил документ Word, в который подставляются данные из Excel. На вкладке "Слияние" переключаемся стрелками, данные меняются, всё ок. Но, по ряду причин такой способ не совсем подходит.
Можно ли сделать немного наоборот: добавить в каждую строку Excel-файла "волшебную кнопку", по нажатии которой данные из текущей строки (ФИО, № приказа) будут подставлены в документ Word (доп соглашение).
Изменено: rjk - 22.06.2018 14:23:23
 
И снова название темы - ни в дугу...
Ознакомьтесь, пожалуйста, с правилами форума
 
rjk, все можно сделать. ТОлько не понятно где получить?
Цитата
rjk написал:  получать форму доп. соглашения
в какой еще строке?
Цитата
rjk написал: одержатся в этой строке
Приложите файл- пример и опишите или сделайте в нем что хотите получить в  итоге.
Не бойтесь совершенства. Вам его не достичь.
 
Код
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 у меня "метки"
 
kalmar, Ваше сообщение скрыл. А куда Вы торопитесь?
 
Цитата
Юрий М написал:
А куда Вы торопитесь?
Юрий, ведь явно будет проблематично выложить и шаблон документа Word и "базу" (файл Excel).
вроде ясно описали ситуацию, что через слияние всё сделано. я и сам давно это уже делал (слияние).
потом понял, что пользователи не умеют этим инструментом работать. пришлось переделывать через "замену". вот и выложил готовое решение.
 
Если помогаете в теме с таким нарушением - сами предлагайте адекватное название. Посетителю помогаете, модераторам свинью подсовываете: автор получил решение и ушел, модератору после этого придется вникать в тему и переименовывать ее
 
vikttur, теперь уже не изменить?
 
Цитата
rjk написал:
теперь уже не изменить?
можно. просто напишите тему и если подходит, то исправят
 
Предложите. Модераторы заменят
 
a.i.mershik, поправил сообщение. Самих документов пока нет, могу приложить "тестовый стенд".  
 
Цитата
kalmar написал:
вот и выложил готовое решение.
А замечание модератора было устранено?
 
vikttur, хммм... Может быть "Автоматизация подготовки приказов или иных однотипных документов с заполнением из таблицы Excel"?
 
Цитата
Юрий М написал:
А замечание модератора было устранено?
Юрий, не спорю с Вами :). но сначала выложил решение, потом было Ваше сообщение о моей "спешке"
 
kalmar, а #2? Оно перед Вашим. Я о нём говорю.
 
Цитата
Юрий М написал:
а #2?
:oops:  сдаюсь
 
Название поменял. Ранее скрытое сообщение отображается.
 
в таблице excel доп. колонку Печатать и 1 у всех строк которые нужно отпечатать
затем:
1. слияние позволяет сливать данных из строк по условию (пишете где Печатать = 1)
2. В Excel сортируете данные по колонке Печатать, в Word пишете слить на принтер с 1 по 724 (сколько единиц в колонке Печатать)
в обоих случаях нет необходимости щелкать по одной и печатать по 1, а делается это одной командой слить...
проставить 1 - это нисколько не дольше, чем прощелкать кнопки Печатать на нужных строках (а с учетом, что эти кнопки еще нужно разместить, каждой назначить макрос и собственно написать сам макрос - вариант с доп.колонкой и единичками в ней - гораздо быстрее в реализации.
удачи!
Изменено: Ігор Гончаренко - 22.06.2018 13:03:57
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
в Word пишете слить на принтер
Имеется в виду печать определённого диапазона страниц или речь о способе слияния документов?
 
Юрий М, благодарю!
 
kalmar, тут нужно повспоминать) Давно макросы не ковырял...
 
Цитата
rjk написал:
Имеется в виду печать определённого диапазона страниц
имеется в виду, что щелкая в Word следующий, следующий...
Вы видите один и тоже документ заполненный все новыми и новыми данными, если после каждый следующий, Вы жмете файл, печать, ок...
то все эти "следующмй", "файл", "печать", "Ок" можно заменить одним комплексным действием "слить на печать" строки с 1 по 321. все! 321 документ ушли на печать! Пейте чай, следите чтобы в принтер добавить бумагу после полного опустошения лотка.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, разобрался, увидел.
 
Господа, на выходных буду пробовать оба варианта. По ходу пьесы буду отписываться о результатах. На первый взгляд для решения задачи подходят оба. kalmar, Ігор Гончаренко, Благодарю за ответы!
Страницы: 1
Наверх