Всем доброго времени суток!
Есть таблица 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
|