Страницы: 1
RSS
Добавление срок в таблицу при заполнении документа Word из данных Excel
 
Всем доброго времени суток!
Есть таблица Excel с данными на основании которого заполняется документ Word по шаблону.
Имеется макрос который заполняет документ Word в зависимости от выбранной строки (заполняет данные активной сроки).
Макрос был взят из сети и отредактирован.
Пример макроса с таблицей и шаблоном документа загружен.
Суть заключается в следующем в таблице имеются данные по договорам, по некотором договорам имеются данные в нескольких последующих сроках.
Смог осуществить только заполнение данных активной сроки.
Не могу сделать чтобы после заполнения данных активной сроки в Word макрос проверял следующую сроку и если в первом столбце следующей сроки нет данных, то макрос добавил в таблице Wod новую сроку и заполнил ее данными (следующей сроки Excel). А если в первом столбце следующей сроки есть данные остановился.
Код
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
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
 
Вообще, с вопросом размножения строк в таблице Word лучше обратиться на форум по Word...

делается это примерно так (если размножаемой строке назначена закладка)

Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
' здесь doc - ссылка на документ Word
For Each bm In doc.Bookmarks        ' перебираем все закладки в документе
    If bm.Range.Information(12) Then        ' если это закладка в таблице
        For i = 1 To rc&        ' rc& - сколько копий строки надо сделать
            With bm.Range
                Set oFirstCellRange = .Cells(1).Range
                oFirstCellRange.Collapse 1        'wdCollapseStart
                .Copy
                'Вставка строки из закладки над закладкой
                oFirstCellRange.PasteAndFormat 16        'wdFormatOriginalFormatting
 
                ' теперь производим замены в новой строке
                ' ссылка на диапазон новой строки:  .Tables(1).Rows(.Rows(1).Index).Range
            End With
        Next
    End If
Next


А если надоест колдовать с кодом, - можете посмотреть готовое решение:
http://excelvba.ru/programmes/FillDocuments

там есть опция размножения строк в шаблоне:
http://excelvba.ru/programmes/FillDocuments/Multirow
 
Игорь,подскажите как мне сделать ссылку на мой открытый документ и где прописать код.
Я новичок в этом деле и не совсем все получается.
 
Цитата
nurlan86 написал: Имеется макрос
А в макросе имеется ссылка
Код
1
2
3
4
5
6
Set ObjWord = CreateObject("Word.Application")
    With ObjWord
        .Visible = True
        .Documents.Open Filename:=file
        Set objDoc = .ActiveDocument ' здесь objDoc  - ссылка на документ Word
    End With
 
Ничего к сожалению не получается.
Подскажите а что прописывать в переменную bm
Страницы: 1
Читают тему
Наверх
Loading...