Word VBA Макросы: Как обработать несколько таблиц?

Автор Svetik, 13 ноября 2017, 20:23

Svetik

Подскажите, как выбрать (выделить) все таблицы.

Администратор

Обычно выделять не надо. Можно просто пройтись по таблицам и обрабатывать каждую таблицу.
К тому же в ворде нельзя выделить с помощью макроса несмежные фрагменты.

Svetik

Я не против такого варианта. Только не работает

Sub Макрос1()
   
    Dim tbl As Table
       
    On Error Resume Next
   
    For Each tbl In ActiveDocument.Tables
       
    With Selection.ParagraphFormat
        .FirstLineIndent = CentimetersToPoints(1.25)
    End With
   
    Next tbl
   
   
End Sub

Администратор

Selection относится к выделенному фрагменту.
Если у вас например выделен первый абзац в файле, а макрос перешёл к таблице 2, то какая взаимосвязь между Selection и таблицей 2? Выделенный первый абзац - это Selection, а таблица 2 это tbl.

Внутри таблицы делайте цикл по всем абзацам или используйте tbl.Range для доступа сразу ко всем абзацам.

В коде пишите tbl, ставьте точку и выбирайте нужное.

Svetik

Спасибо! Вроде работает!

А как изменить макрос, чтобы это все работало только в выделенном фрагменте?

Макрос
Sub Макрос2()

    Dim tbl As Table

    For Each tbl In ActiveDocument.Tables

        With tbl.Range
            With .ParagraphFormat
                .FirstLineIndent = CentimetersToPoints(0.25)
            End With

        End With

    Next tbl

End Sub
[свернуть]

Администратор

Просматривайте таблицы в объекте Selection. Напишите в коде "Selection", поставьте точку, выберите Tables.
Selection - это то, что выделено, это выделение юзер видит на мониторе.