Форум по VBA и MS Office

Word => Макросы в Word => Тема начата: Dendro от 07 марта 2017, 18:49

Название: Word Макросы: Как вставить таблицу в нужное место в файле
Отправлено: Dendro от 07 марта 2017, 18:49
Если упрощенно, то задача у меня такая. В вордовском файле есть слово, мне нужно его найти и создать там таблицу. Таблицу я создам, мне важно расположить ее в нужном месте. Подскажите пожалуйста, как сделать.
Название: Re: Word Макросы: Как вставить таблицу в нужное место в файле
Отправлено: Администратор от 07 марта 2017, 19:06
Макрос
Sub Макрос()

    Dim rng As Range, tbl As Table
   
    '1. Поиск метки, вместо которой надо вставить таблицу.
    With ActiveDocument.Range.Find
        .text = "метка"
        .MatchCase = True
        .MatchWholeWord = True
        .Execute
        ' Присваивание имени "rng" фрагменту файла, где находится метка.
        Set rng = .Parent
    End With
   
    '2. Вставка таблицы вместо метки и присваивание таблице имени "tbl".
        ' Далее в коде можно обращаться к вставленной таблице по имени "tbl".
    Set tbl = ActiveDocument.Tables.Add(Range:=rng, NumRows:=1, NumColumns:=2)

End Sub
[свернуть]
Название: Re: Word Макросы: Как вставить таблицу в нужное место в файле
Отправлено: Dendro от 07 марта 2017, 20:35
Спасибо большое, всё очень понятно. Сейчас попробую.
Название: Re: Word Макросы: Как вставить таблицу в нужное место в файле
Отправлено: Dendro от 07 марта 2017, 20:50
Замечательно работает. Я чуть-чуть подправил для оформления таблицы:

    Dim rng As Range, tbl As Table
   
    '1. Поиск метки, вместо которой надо вставить таблицу.
    With ActiveDocument.Range.Find
        .Text = "метка"
        .MatchCase = True
        .MatchWholeWord = True
        .Execute
        ' Присваивание имени "rng" фрагменту файла, где находится метка.
        Set rng = .Parent
    End With
   
    '2. Вставка таблицы вместо метки и присваивание таблице имени "tbl".
        ' Далее в коде можно обращаться к вставленной таблице по имени "tbl".
    Set tbl = ActiveDocument.Tables.Add(Range:=rng, NumRows:=3, NumColumns:=3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitFixed)