Перше замовлення зі знижкою −10%Замовити

Оформлення

Один макрос для всіх таблиць: як оформити таблиці курсової за методичкою за кілька секунд

9 хв читання

У курсовій чи дипломній роботі буває від 15 до 40 таблиць, і кожна має відповідати тим самим вимогам методички: шрифт, інтервали, ширина, повторення шапки на новій сторінці. Ручне форматування забирає години й майже завжди залишає розбіжності між таблицями, які помічає нормоконтроль. Макрос Word виконує однаковий набір дій для кожної таблиці без пропусків.

Нижче описано три етапи: запис макросу без програмування, призначення йому кнопки та сполучення клавіш і розширення його дії на всі таблиці документа однією командою.

1. Які параметри таблиці задає макрос

Вимоги вишів відрізняються в деталях, але перелік параметрів, які перевіряють під час нормоконтролю, майже завжди однаковий. У таблиці 1 наведено типові значення. Перед записом макросу їх слід звірити з методичкою своєї кафедри.

Таблиця 1. Параметри таблиці, які задає макрос

Параметр

Типове значення

Де задається у Word

Шрифт і кегль

Times New Roman, 12 пт (іноді 14 пт)

Основне → Шрифт

Міжрядковий інтервал

одинарний

Основне → Абзац

Інтервал перед і після абзацу

0 пт

Основне → Абзац

Відступи ліворуч, праворуч і першого рядка

0 см

Основне → Абзац

Ширина таблиці

100 % ширини поля набору

Властивості таблиці → Таблиця

Розташування

по центру, без обтікання текстом

Властивості таблиці → Таблиця

Рядок заголовків (шапка)

повторюється на кожній сторінці

Макет → Повторити рядки заголовків

Найпоширеніша прихована помилка полягає в тому, що таблиця «успадковує» від основного тексту відступ першого рядка 1,25 см і полуторний інтервал. Текст у клітинках зсувається вправо, а рядки стають вищими, ніж потрібно (рис. 1). Вручну це легко пропустити, тому ці параметри обов'язково включають до макросу.

Рис. 1. Таблиця до і після застосування макросу (схема)
Рис. 1. Таблиця до і після застосування макросу (схема)

Вирівнювання тексту в клітинках до макросу не включають. У шапці його зазвичай центрують, у текстових стовпцях вирівнюють ліворуч, у числових праворуч або по центру. Одне правило для всіх клітинок зіпсувало б таблиці.

2. Підготовка до запису

  • Збережіть копію роботи. Макрос змінює документ одразу.
  • Поставте курсор у будь-яку клітинку першого рядка таблиці. Під час запису Word фіксує команди стрічки й діалогових вікон, але не фіксує виділення тексту мишею. Тому позицію курсора задають до початку запису, а таблицю виділяють командою стрічки.
  • Підготуйте ім'я макросу. Воно пишеться латиницею, без пробілів і починається з літери, наприклад FormatTables.

Вкладка «Розробник» (Developer) для запису не потрібна: команди є на вкладці «Вигляд». Вона знадобиться на третьому етапі для редактора VBA. Вмикають її так: «Файл → Параметри → Настроїти стрічку», прапорець «Розробник».

3. Етап 1. Запис макросу для однієї таблиці

Дії виконують строго в наведеному порядку. Помилкову дію Word теж запише, тому, якщо щось пішло не так, простіше зупинити запис і почати знову з тим самим ім'ям, погодившись замінити макрос.

  1. Відкрийте «Вигляд → Макроси → Записати макрос» (View → Macros → Record Macro).
  2. У полі «Ім'я макросу» введіть FormatTables.
  3. У списку «Зберегти макрос у» виберіть «Усі документи (Normal.dotm)». Макрос зберігатиметься в шаблоні Normal на вашому комп'ютері й буде доступний у кожному документі. Сама курсова залишиться звичайним файлом .docx без макросів.
  4. Натисніть OK. Кнопку і клавіші можна призначити одразу («Кнопка», «Клавіатура»), але зручніше зробити це пізніше (етап 2). Після OK вказівник миші набуде вигляду касети: запис почався.
Рис. 2. Запуск запису і параметри макросу (схема)
Рис. 2. Запуск запису і параметри макросу (схема)
  1. На вкладці «Макет» для таблиць (Table Layout) натисніть «Повторити рядки заголовків» (Repeat Header Rows). Команда застосовується до рядка з курсором, тобто до першого.
  2. «Макет → Виділити → Виділити таблицю» (Select → Select Table).
  3. На вкладці «Основне» введіть у полях шрифту Times New Roman і 12.
  4. Відкрийте діалог «Абзац» (стрілка в правому нижньому куті групи «Абзац»). Задайте: відступ ліворуч і праворуч 0 см, перший рядок «(немає)», інтервал перед і після 0 пт, міжрядковий «Одинарний». Натисніть OK.
  5. «Макет → Властивості» (Properties), вкладка «Таблиця»: прапорець «Бажана ширина», значення 100, одиниці «Відсотки»; вирівнювання «По центру»; обтікання «Немає». Натисніть OK.
Рис. 3. Вікно «Властивості таблиці»: ліворуч параметри кроку 9, праворуч прапорець рядка заголовка (схема)
Рис. 3. Вікно «Властивості таблиці»: ліворуч параметри кроку 9, праворуч прапорець рядка заголовка (схема)
  1. «Вигляд → Макроси → Зупинити запис» (Stop Recording).

Тепер, щоб відформатувати таблицю, достатньо поставити курсор у її перший рядок і запустити макрос через «Вигляд → Макроси → Переглянути макроси → Виконати». Для регулярного використання макросу призначають кнопку.

4. Етап 2. Кнопка на панелі швидкого доступу і сполучення клавіш

Кнопка

  1. «Файл → Параметри → Панель швидкого доступу» (Quick Access Toolbar).
  2. У списку «Вибрати команди з» виберіть «Макроси».
  3. Виділіть Normal.NewMacros.FormatTables і натисніть «Додати».
  4. Натисніть «Змінити…», виберіть значок і задайте відображуване ім'я, наприклад «Таблиці за методичкою». Двічі натисніть OK [1].
Рис. 4. Додавання макросу на панель швидкого доступу (схема)
Рис. 4. Додавання макросу на панель швидкого доступу (схема)

Сполучення клавіш

«Файл → Параметри → Настроїти стрічку», унизу біля напису про сполучення клавіш натисніть «Настроїти» (Keyboard shortcuts: Customize). У списку категорій виберіть «Макроси», праворуч виберіть FormatTables, у полі нового сполучення натисніть потрібні клавіші й натисніть «Призначити».

Під полем Word показує, чи вже зайняте це сполучення. Сполучення Alt+Shift+T, наприклад, вставляє поточний час, і його перепризначення вимкне стандартну функцію. Комбінації з Ctrl+Alt+Shift зазвичай вільні.

5. Етап 3. Як обробити всі таблиці однією командою

Записаний макрос відтворює конкретні дії над поточним виділенням (у коді це Selection), тобто над однією таблицею. Повторити дію для кожної таблиці документа запис не вміє: це потребує циклу, який створюють лише в редакторі VBA. Для цього не потрібно вміти програмувати: достатньо вставити готовий текст макросу.

Що записав Word

Натисніть Alt+F11. Відкриється редактор Visual Basic, а в модулі NewMacros буде записаний код. Скорочено він має такий вигляд:

Sub FormatTables()
    Selection.Rows.HeadingFormat = wdToggle
    Selection.Tables(1).Select
    Selection.Font.Name = "Times New Roman"
    Selection.Font.Size = 12
    With Selection.ParagraphFormat
        .LeftIndent = CentimetersToPoints(0)
        .RightIndent = CentimetersToPoints(0)
        .SpaceBefore = 0
        .SpaceAfter = 0
        .LineSpacingRule = wdLineSpaceSingle
        .FirstLineIndent = CentimetersToPoints(0)
        ' ... ще 10–15 рядків, які Word додає автоматично
    End With
    Selection.Tables(1).PreferredWidthType = wdPreferredWidthPercent
    Selection.Tables(1).PreferredWidth = 100
    Selection.Tables(1).Rows.Alignment = wdAlignRowCenter
    Selection.Tables(1).Rows.WrapAroundText = False
End Sub

Зверніть увагу на перший рядок. Команда «Повторити рядки заголовків» записується як перемикач (wdToggle). Якщо запустити макрос двічі для однієї таблиці, повторення шапки вимкнеться. Для покрокової версії достатньо замінити wdToggle на True.

Макрос для всього документа

Установіть курсор нижче рядка End Sub і вставте наведений код. Збережіть зміни (Ctrl+S) і закрийте редактор. Призначте макросу FormatAllTables окрему кнопку так само, як на етапі 2.

Sub FormatAllTables()
    Dim t As Table
    Dim n As Long
    Application.UndoRecord.StartCustomRecord "Format all tables"

    For Each t In ActiveDocument.Tables
        ' skip tables on page 1 (title page)
        If t.Range.Information(wdActiveEndPageNumber) > 1 Then
            With t.Range.Font
                .Name = "Times New Roman"
                .Size = 12
            End With
            With t.Range.ParagraphFormat
                .LeftIndent = 0
                .RightIndent = 0
                .FirstLineIndent = 0
                .SpaceBefore = 0
                .SpaceAfter = 0
                .LineSpacingRule = wdLineSpaceSingle
            End With
            t.PreferredWidthType = wdPreferredWidthPercent
            t.PreferredWidth = 100

            On Error Resume Next
            t.Rows.Alignment = wdAlignRowCenter
            t.Rows.WrapAroundText = False
            t.Rows(1).HeadingFormat = True
            On Error GoTo 0

            n = n + 1
        End If
    Next t

    Application.UndoRecord.EndCustomRecord
    MsgBox "Formatted tables: " & n
End Sub
Таблиця 2. Що робить кожна частина коду

Фрагмент

Призначення

For Each t In ActiveDocument.Tables

Перебирає всі таблиці документа по черзі.

If t.Range.Information(...) > 1

Пропускає таблиці на першій сторінці. Титульний аркуш часто зверстаний таблицею без меж, і її форматування зіпсувало б титул. Якщо титул без таблиць, рядки If і відповідний End If можна видалити.

t.Range.Font, t.Range.ParagraphFormat

Шрифт, кегль, відступи й інтервали всередині таблиці.

PreferredWidthType, PreferredWidth

Ширина 100 % поля набору.

t.Rows(1).HeadingFormat = True

Позначає перший рядок як заголовок. На відміну від запису, це не перемикач: повторний запуск нічого не зламає.

On Error Resume Next … On Error GoTo 0

Не дає макросу зупинитися на таблицях з вертикально об'єднаними клітинками. Для таких таблиць Word не дозволяє звертатися до окремих рядків (помилка 5991).

Application.UndoRecord

Об'єднує всі зміни в одну дію: одне натискання Ctrl+Z повністю скасовує роботу макросу.

MsgBox

Після завершення показує кількість оброблених таблиць.

Назву шрифту і кегль змініть відповідно до своєї методички. Якщо шапка складається з двох рядків (багаторівневий заголовок), після рядка t.Rows(1).HeadingFormat = True додайте t.Rows(2).HeadingFormat = True.

Текстові значення в коді подано латиницею навмисно. Редактор VBA в системах, де для програм без Юнікоду не встановлено кириличну мову, замінює кириличні символи знаками питання, і повідомлення стає нечитабельним.

6. Перевірка результату

  • Увімкніть «Основне → Відобразити всі знаки» (¶) і переконайтеся, що в клітинках немає відступу першого рядка.
  • Перегляньте таблиці, що переходять на наступну сторінку: шапка має повторюватися. Повтор видно лише в режимі «Розмітка сторінки» (Print Layout).
  • Перевірте таблиці в додатках. Якщо для них методичка встановлює інші вимоги (наприклад, кегль 10), відформатуйте їх окремо вже після макросу.
  • Надсилайте керівнику файл .docx або .pdf. Макрос лишається в Normal.dotm на вашому комп'ютері й у файл роботи не потрапляє.

7. Типові проблеми та їх усунення

Таблиця 3. Проблеми під час використання макросу

Симптом

Причина

Рішення

Макросу немає в іншому документі

Під час запису його збережено в поточному документі, а не в Normal.dotm

Скопіювати через «Переглянути макроси → Організатор» або записати заново з Normal.dotm

Помилка під час запуску покрокового макросу FormatTables

Курсор стоїть поза таблицею

Поставити курсор у перший рядок таблиці й запустити знову

Шапка не повторюється

Таблицю розірвано вручну на дві або документ відкрито не в режимі «Розмітка сторінки»

Об'єднати частини таблиці або перевірити повтор у режимі «Розмітка сторінки»

Таблиця виходить за правий край

Для стовпців задано фіксовану ширину, більшу за поле набору

«Макет → Автопідбір → Автопідбір за шириною вікна», потім запустити макрос повторно

Кнопка не реагує, з'являється попередження про макроси

Макроси обмежено в параметрах центру безпеки (Trust Center)

Перевірити параметри макросів у «Файл → Параметри → Центр безпеки»; макроси з Normal.dotm зазвичай дозволені

Підсумок

Записаний макрос форматує одну таблицю, на якій стоїть курсор. Цикл For Each поширює ту саму дію на весь документ, а UndoRecord дозволяє скасувати її одним натисканням. Налаштований один раз, макрос працює в усіх наступних роботах: курсових, дипломній, звітах з практики. Змінюються лише значення шрифту і кеглю під нову методичку.

За тим самим принципом можна оформлювати рисунки: розмір, вирівнювання по центру, розташування «в тексті». У коді для цього використовують колекцію InlineShapes замість Tables.

Читайте також

Усі статті
Безкоштовно

Потрібна допомога з роботою?

Розкажіть про роботу і термін — підкажемо, з чого почати, і назвемо точну вартість.

Коротка заявка

Відповідь з ціною і планом роботи надішлемо в Telegram або на пошту — як вам зручніше.

Методичка, план, лекції, зауваження керівника — PDF, Word, фото, разом до 20 МБ

Куди надіслати відповідь