Всем доброго времени суток!
Есть таблица Excel с данными на основании которого заполняется документ Word по шаблону.
Имеется макрос который заполняет документ Word в зависимости от выбранной строки (заполняет данные активной сроки).
Макрос был взят из сети и отредактирован.
Пример макроса с таблицей и шаблоном документа загружен.
Суть заключается в следующем в таблице имеются данные по договорам, по некотором договорам имеются данные в нескольких последующих сроках.
Смог осуществить только заполнение данных активной сроки.
Не могу сделать чтобы после заполнения данных активной сроки в Word макрос проверял следующую сроку и если в первом столбце следующей сроки нет данных, то макрос добавил в таблице Wod новую сроку и заполнил ее данными (следующей сроки Excel). А если в первом столбце следующей сроки есть данные остановился.
Есть таблица Excel с данными на основании которого заполняется документ Word по шаблону.
Имеется макрос который заполняет документ Word в зависимости от выбранной строки (заполняет данные активной сроки).
Макрос был взят из сети и отредактирован.
Пример макроса с таблицей и шаблоном документа загружен.
Суть заключается в следующем в таблице имеются данные по договорам, по некотором договорам имеются данные в нескольких последующих сроках.
Смог осуществить только заполнение данных активной сроки.
Не могу сделать чтобы после заполнения данных активной сроки в Word макрос проверял следующую сроку и если в первом столбце следующей сроки нет данных, то макрос добавил в таблице Wod новую сроку и заполнил ее данными (следующей сроки Excel). А если в первом столбце следующей сроки есть данные остановился.
Код |
---|
Sub Generator() Dim file As String Set ob1 = ActiveWorkbook.ActiveSheet ' теперь переменная ob1 будет содержать ссылку на текущий лист активной книги f_r = Selection.Row ' определяем номер выбранной строки f_c = Selection.CurrentRegion.Columns(Selection.CurrentRegion.Columns.Count).Column ' определяем номер последнего столбца в данной таблице file = Application.GetOpenFilename("Excel Files (*.docx;*.doc), *docx;*.doc") ' открывается диалоговое окно "Открытие документа" ' запускаем Word, открываем выбранный документ Set ObjWord = CreateObject("Word.Application") With ObjWord .Visible = True .Documents.Open Filename:=file Set objDoc = .ActiveDocument End With With objDoc.Range For j = 1 To f_c ' цикл по всем столбцам таблицы isk_zn = ob1.Cells(1, j) 'искомое значение - находится в первой строке нашей таблицы zamen_zn = ob1.Cells(f_r, j) 'значение для замены .Find.ClearFormatting .Find.Replacement.ClearFormatting 'осуществляем замену With .Find .Text = isk_zn .Replacement.Text = zamen_zn .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With .Find.Execute Replace:=2 Next j End With End Sub |