Автор Тема: Обращение ко всем таблицам в доке, удалить отступ слева  (Прочитано 407 раз)

Оффлайн Посетитель 27.06.2022

  • Посетитель форума
  • Сообщений: 2
Всем доброго времени суток. В общем хочу написать пару макросов.
Основная цель обработка таблиц, а именно интересует удаление отступа слева и удаление границ у таблиц.
Не могу понять как обратиться ко всем таблицам, в активном документе, и задать ту или иную команду .
К примеру вот так я представляю код, который конечно же не работает.

Sub TableBorders ()

 ' переменная tbl, это таблица
Dim tbl As Table

 ' применяем свойство обнуления границ для каждой таблицы в открытом доке
     For Each tbl In ActiveDocument.Tables
        .Borders(wdBorderTop).LineStyle = wdLineStyleNone
        .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
        .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
        .Borders(wdBorderRight).LineStyle = wdLineStyleNone
        .Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone
        .Borders(wdBorderVertical).LineStyle = wdLineStyleNone
        .Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
        .Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
End Sub

В общем, если то что я хочу реально воплотить в жизнь, помогите пожалуйста.

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.

Можно использовать два способа.

Способ 1:
tbl.Borders(wdBorderTop).LineStyle = wdLineStyleNone
Т.е. перед .Borders нужно дописать в каждую строку tbl.

Способ 2:
With tbl
        .Borders(wdBorderTop).LineStyle = wdLineStyleNone
        .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
        .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
        .Borders(wdBorderRight).LineStyle = wdLineStyleNone
        .Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone
        .Borders(wdBorderVertical).LineStyle = wdLineStyleNone
        .Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
        .Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
End With

Оффлайн Посетитель 27.06.2022

  • Посетитель форума
  • Сообщений: 2
Спасибо, заработало, но только еще нужно было перед завершением процедуры (End Sub) добавить строку "Next tbl" )

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Да, я не заметил этого. Я не тестировал код у себя.