Страница 1 из 1

О быстром оформлении таблиц в Word

Добавлено: 28 авг 2017, 19:50
masm0
В и-нете много шуточек о перфекционистах. Возможно, я из их числа: я не могу смотреть без боли в глазах на отчеты программ для расчета выбросов — cразу хочется отредактировать это безобразие! К тому же у уважающих себя контор имеются внутренние стандарты, регламентирующие правила оформления своей продукции. Если исправить шрифт и его кегль можно с помощью нажатий нескольких клавиш, то при оформлении таблиц придется потрудиться.

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

Важно! Ниже приведен пример быстрого оформления таблиц для отчетов программ фирмы Интеграл. Более универсальные способы (или, напротив, еще более узкоспециализированные) рассмотрим в других заметках.

Установка макроса

Итак, начнем с того, что добавим в шаблон Normal.dotm новый макрос.

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

1. Закрываем все документы, открытые в Word, и оставляем одну единственную открытую копию приложения. Можно создать новый документ.

2. Отображаем на ленте вкладку Разработчик. Для этого воспользуемся инструкцией Microsoft.

3. Теперь самое неприятное для обычного юзера — включаем макросы. Самый простой способ — это на вкладке Разработчик нажать на кнопку Безопасность макросов и там выбрать Включить все макросы, а затем закрыть Word и открыть заново. Конечно, это довольно опасно, так как при открытии документов из неизвестных источников вы рискуете подцепить вирус. Чтобы себя обезопасить, не открывайте такие документы или отключайте макросы, когда вы с ними не работаете. Подробная инструкция о включении и выключении макросов приведена на сайте Microsoft.

4. Следующим шагом, переходим на вкладку Вид и записываем пустой макрос. Для этого снова воспользуемся инструкцией разработчика Office. Просто запускаем запись, предварительно назначив сочетание клавиш или кнопку на ленте, и сразу останавливаем (я запускаю макрос с помощью сочетания клавиш «Alt+Ctrl+Shift+Z» (мне так удобно), но также его можно запускать с помощью кнопки на ленте). По умолчанию Word предложит назвать макрос «Макрос1». Можно так и оставить — это не принципиально (я назвал "ОформлениеТаблицыВВыделенном").

5. Переходим на вкладку Разработчик. Запускаем редактор Visual Basic (первая кнопка слева).

Слева вверху отобразится окно Project – Normal. В дереве откройте Normal->Modules->NewMacros. Щелкните на этой позиции дважды. Отобразится окно Normal – NewMacros (Code). Если мы назвали макрос «Макрос1», то увидим следующий код:

Код: Выделить всё

Sub Макрос1()
'
' Макрос1 Макрос
'
'

End Sub
Между «Sub Макрос1()» и «End Sub» вставляем код для автоматического оформления таблиц.

Код: Выделить всё

    Dim i&
    
    With Selection
        For i = 1 To .Tables.Count
            With .Tables(i)
                
                ' Оформление рамок таблиц
                .Borders(wdBorderTop).LineStyle = Options.DefaultBorderLineStyle
                .Borders(wdBorderTop).LineWidth = Options.DefaultBorderLineWidth
                .Borders(wdBorderLeft).LineStyle = Options.DefaultBorderLineStyle
                .Borders(wdBorderLeft).LineWidth = Options.DefaultBorderLineWidth
                .Borders(wdBorderBottom).LineStyle = Options.DefaultBorderLineStyle
                .Borders(wdBorderBottom).LineWidth = Options.DefaultBorderLineWidth
                .Borders(wdBorderRight).LineStyle = Options.DefaultBorderLineStyle
                .Borders(wdBorderRight).LineWidth = Options.DefaultBorderLineWidth
                .Borders(wdBorderHorizontal).LineStyle = Options.DefaultBorderLineStyle
                .Borders(wdBorderHorizontal).LineWidth = Options.DefaultBorderLineWidth
                .Borders(wdBorderVertical).LineStyle = Options.DefaultBorderLineStyle
                .Borders(wdBorderVertical).LineWidth = Options.DefaultBorderLineWidth
                
                ' Выравнивание таблиц
                .AutoFitBehavior (wdAutoFitContent)
                .AutoFitBehavior (wdAutoFitWindow)
                
            End With
        Next i
    End With
6. Сохраняем (Ctrl+S). Теперь редактор Visual Basic можно закрыть и перейти в Word.

Как пользоваться макросом

Пользоваться макросом очень просто. Щелкаем мышкой по таблице или выделяем часть текста с несколькими таблицами (можно выделять части таблиц), а затем запускаем макрос (клавишами или кнопкой). Выделенные таблицы изменят стиль рамок и выровняются.

Результаты использования макроса

Было

Допустим, мы вставили отчет программы в свой условный шаблон документа: мы сразу заметим, что некоторые таблицы выходят за рамки полей, регламентируемых нашим условным стандартом, а некоторые таблицы неоправданно сжаты и занимают дополнительное место в документе.
БЫЛО.png
Стало

Теперь применяем макрос и видим, что широкие таблицы сжались, а узкие стали шире, при этом занимая меньше места на бумаге (в данном примере экономия бумаги составила около 17%).
СТАЛО.png
Также макрос оформляет рамки таблиц. Дело в том, что разные программы имеют разные стили оформления рамок таблиц. Теперь, если вам необходимо собрать отчеты из разных программ в одном документе, то все таблицы будут выглядеть одинаково.

Альтернативный способ (долгий)


Те же действия можно осуществить без применения макросов:

1. Щелкаем по таблице. Выделяем всю таблицу с помощью появившегося значка сверху справа от таблицы.
2. Щелкаем правой кнопкой мыши на таблице и в контекстном меню выбираем «Автоподбор». В подменю выбираем «Автоподбор по содержимому».
3. Для оформлении рамок таблицы на панели «Главная» щелкаем на кнопке настройки границ и выбираем «Все границы».
4. Вновь щелкаем правой кнопкой мыши на таблице. В контекстном меню выбираем «Автоподбор», а в подменю выбираем «Автоподбор по ширине окна».

Таким образом придется сделать 9—11 действий для одной таблицы (против 2—3 действий для нескольких таблиц при использовании макроса). При этом нужно включать мозг, чтобы не перепутать и не забыть все эти действия в их сложной последовательности. Для одноразового оформления данный способ вполне применим, но очевидно, что для оформления таблиц в промышленных масштабах лучше один раз потратить время на установку макроса.

Оформление сразу всех таблиц в документе

Выделяем весь текст в документе (Ctrl+A) и запускаем наш макрос.

Примечание 1: Также можно поменять первую строчку макроса «With Selection» на «With Application.ActiveDocument», но я считаю, что это не оптимально.

Примечание 2: Если у вас большой отчет, то его автоматическое оформление может занять продолжительное время. Например, на моём старом домашнем компьютере оформление отчета из 267 страниц, содержащего 1047 таблиц, заняло 3 минуты 25 секунд (согласитесь, что это лучше, чем несколько дней оформлять вручную). А пока компьютер работает, эти 3—4 минуты лучше потратить на чай, кофе или даже сигаретку ;-)

Смотри мою следующую заметку Об оформлении колонтитулов в Excel и ставь лайки ;-)

Re: О быстром оформлении таблиц в Word

Добавлено: 30 авг 2017, 09:00
VadimV
Может я что-то не так сделал, но у меня кроме того, что невидимые линии в таблицах стали видимыми - ничего не происходит).

А, не, произошло. Исчез биткоин из кошелька!

Re: О быстром оформлении таблиц в Word

Добавлено: 06 сен 2017, 20:15
masm0
VadimV, специально для тебя потратил время и дописал раздел "Результаты использования макроса".

Я же еще в начале сказал, что моё решение не идеально. Для всех всевозможных задач оно неприменимо, но для конкретной задачи, упомянутой в посте, — вполне себе норм:)

Re: О быстром оформлении таблиц в Word

Добавлено: 07 сен 2017, 02:27
VadimV
ТАк я не в претензии же).
Просто всегда ждешь чего-то грандиозного. Прорыва в технике).
Но, только сейчас пришло в голову, это ж можно мою просьбу о сортировке результатов по номеру точки просто макросом реализовать.

Re: О быстром оформлении таблиц в Word

Добавлено: 22 сен 2017, 11:02
MrChel
Протестил, всё отлично работает, перфекционисты довольны :-)

Re: О быстром оформлении таблиц в Word

Добавлено: 14 ноя 2017, 21:32
masm0
Коллеги, мне так не нравились мои недоработки, что пришлось оптимизировать код. Теперь не надо щелкать по крестикам — можно просто щелкнуть по таблице или выделить текст с несколькими таблицами; также можно оформить сразу все таблицы в документе (см. обновленный раздел Как пользоваться макросом и новый раздел Оформление сразу всех таблиц в документе). К тому же больше не будет предупреждений об ошибках при неправильном выделении таблицы.

Чтобы обновить макрос, замените предыдущий код новым.