Форум по VBA и MS Office

Word => Макросы в Word => Тема начата: Svetik от 13 ноября 2017, 20:23

Название: Word VBA Макросы: Как обработать несколько таблиц?
Отправлено: Svetik от 13 ноября 2017, 20:23
Подскажите, как выбрать (выделить) все таблицы.
Название: Re: Word VBA Макросы: Как обработать несколько таблиц?
Отправлено: Администратор от 14 ноября 2017, 19:00
Обычно выделять не надо. Можно просто пройтись по таблицам и обрабатывать каждую таблицу.
К тому же в ворде нельзя выделить с помощью макроса несмежные фрагменты.
Название: Re: Word VBA Макросы: Как обработать несколько таблиц?
Отправлено: Svetik от 14 ноября 2017, 19:31
Я не против такого варианта. Только не работает

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
Название: Re: Word VBA Макросы: Как обработать несколько таблиц?
Отправлено: Администратор от 14 ноября 2017, 19:39
Selection относится к выделенному фрагменту.
Если у вас например выделен первый абзац в файле, а макрос перешёл к таблице 2, то какая взаимосвязь между Selection и таблицей 2? Выделенный первый абзац - это Selection, а таблица 2 это tbl.

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

В коде пишите tbl, ставьте точку и выбирайте нужное.
Название: Re: Word VBA Макросы: Как обработать несколько таблиц?
Отправлено: Svetik от 14 ноября 2017, 19:47
Спасибо! Вроде работает!

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

Макрос
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
[свернуть]
Название: Re: Word VBA Макросы: Как обработать несколько таблиц?
Отправлено: Администратор от 14 ноября 2017, 22:24
Просматривайте таблицы в объекте Selection. Напишите в коде "Selection", поставьте точку, выберите Tables.
Selection - это то, что выделено, это выделение юзер видит на мониторе.