Створення довгої таблиці з повторюваними заголовками стовпців І заголовками розділів


0

На моєму робочому місці ми робимо багато версій документа на 5-7 сторінок, який в основному є однією довгою таблицею в Word 2010. Повторюваний рядок заголовка перераховує тип інформації в кожному стовпчику.

Проблема полягає в тому, що робити заголовки розділів потрібно назавжди вручну. Члени моєї команди повинні вставити новий рядок для заголовка розділу. Вручну об’єднайте клітини в одну велику заголовкову клітинку, після чого вручну змініть бічні рамки на білі. Потім, якщо розділ переходить на наступну сторінку, вони повинні створити новий рядок з назвою Назва розділу (Продовження).

Результат цього дуже візуально непривабливий і важко читається, коли запущений рядок заголовка, схоже, плаває, від’єднаний над заголовком першого розділу на кожній сторінці, а не сидіти під заголовком, як ви побачили в звичайній таблиці. Але найгірше те, що коли документ оновлюється та зміни сторінки, хтось повинен повертатися та повторювати всі заголовки розділів, додаючи та видаляючи рядки вручну.

Я відчуваю, що на цей процес було витрачено занадто багато годин, і повинен бути спосіб автоматизувати частину або все це. Я також відкритий для використання іншого програмного забезпечення, ніж Word, якщо воно дешеве або безкоштовне для комерційного використання. Будь-які пропозиції вдячні.


Чи справді це потрібно робити як єдину таблицю? Чи можете ви використати іншу техніку для розміщення заголовка розділу вгорі кожної сторінки (наприклад, поле {STYLEREF}? Наскільки важливі тексти "продовження"?

Я спробував розбити таблицю на більш дрібні розділи, але виявив, що, хоча це виглядає приємніше, це не економить час, тому що я повинен робити як заголовки стовпців, так і заголовки розділів вручну. Я ніколи раніше не використовував поле ref ref style чи чув про нього раніше. Дякую за цікаву ідею. Тексти продовження - це вподобання мого менеджера, але я вважаю, що вона передумає, якби було твердження, що різниця між розділами все-таки буде візуально зрозумілою.
superuserb49345

Чи можете ви помістити зразок документа десь, де його можна завантажити?

Я завантажив сюди зразок таблиці в папку " dropbox.com/s/auopjeslxnuonz4/template_lorumipsum.docx" Як ви бачите, це можна зробити так, щоб заголовки стовпців не повторювалися автоматично, щоб редактор мав більше контролю над зовнішнім виглядом кожного розділу. Але тоді і заголовки стовпців, і заголовки розділів повинні бути переглянуті вручну при зміні сторінки, тим самим подвоївши роботу.
superuserb49345

Відповіді:


1

Я не думаю, що буде такий простий спосіб досягти цього плану, але сподіваюся, що хтось придумає простіший підхід ...

Я можу придумати два основні підходи, якими ви могли скористатися. На даний момент я припускаю, що в документі немає інших заголовків / колонтитулів. Я відправив документ , який показує , як підхід два працюватиме

https://www.dropbox.com/s/ngrhc8yds0umnoj/template_lorumipsum_mod1.docx

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

Я вважаю, що підхід мабуть потребує деяких макросів VBA, щоб він працював. Що ви б робили, так і є

  • Видаліть повторюваний рядок заголовка
  • Покладіть цей рядок як однорядну таблицю в заголовку документа, який потім повториться
  • Використовуйте по одній таблиці для кожного розділу з повторенням заголовка в кожному розділі.

У цьому випадку заголовки стовпців основної таблиці завжди були б над "заголовками розділів", не було б "продовження". тексти (хоча ви, можливо, зможете це виправити за допомогою вилучення), і вам доведеться мати справу з тим, що заголовки стовпців є окремими від даних. Це означає дві речі:

  • між заголовками та даними буде вертикальний зазор (ви можете, мабуть, зменшити його, гарантуючи, що рядок заголовків вище, ніж заголовок документа)
  • ширина стовпців може змінюватись від таблиці до таблиці,
    виконуючи горизонтальне вирівнювання. Єдиний спосіб, на який я думаю, ви зможете легко виправити
    це запуск макросу (VBA), який застосовував однакові
    ширини стовпців до кожного рядка в кожній таблиці. Якщо вашим користувачам
    заборонено використовувати макроси VBA та / або макет таблиці, може бути складнішим, ніж пропонує зразок документа (наприклад, ви колись об'єднувати / розділяти
    стовпці), то, мабуть, це не буде практичним підходом.

Підхід два - це зберегти у вас макет таблиці, але використовуйте деякі коди полів Word, щоб вставити заголовок на кожну сторінку.

Я не думаю, що пропозиція, яку я раніше робила для використання полів {STYLEREF}, не спрацює, оскільки вони насправді не надають заголовків продовження (наприклад, поле STYLEREF зазвичай відображає текст першого заголовка на сторінці, а не текст заголовка, який продовжується).

Єдиний спосіб, коли я знаю, як це зробити, - це використовувати деякі незвичайні поля SEQ для відстеження заголовків розділів та вирішення того, що слід відображати в кожному заголовку сторінки. Щоб зробити цю роботу, ваші користувачі повинні мати можливість працювати з кодами полів (на жаль, вони виглядають складно і їх досить легко зламати). Також Word працює надто важко, щоб постійно оновлювати заголовки та колонтитули, а іноді може заплутатися, коли в цих областях є багато полів із значеннями, що залежать від сторінки. Тож це, як правило, не працює так добре, коли документ збільшується - я перевірив би, чи працює він для вашого типу та розміру документа.

Конкретний підхід, який я описую тут, дає деякі припущення щодо того, що ви хочете, вгорі кожної сторінки:

  • нічого вгорі першої сторінки
  • нічого вгорі сторінки, якщо перший рядок на сторінці - заголовок розділу
  • інакше текст продовження з попередньої сторінки.

Документ, який я розмістив, містить зразки потрібних вам полів. Для кожного заголовка розділу користувачеві потрібно буде вставити два рядки таблиці, що містять ряд полів. Це абсолютно недоцільно, якщо у користувача немає механізму, який дозволяє їм це легко робити. Наприклад, якщо вони встановили два рядки як відформатовану запис автокорекції під назвою "seched", то все, що їм потрібно зробити, - це ввести

зашитий

слідом пробіл

на початку рядка таблиці, і два ряди будуть включені. Є й інші можливості.

Я припускаю, що ваш початковий документ Word матиме (принаймні) перший (заголовок) рядок таблиці та перший заголовок розділу, тобто "Front Pages" у вашому зразковому документі. дворядковий блок на початку кожного наступного заголовка розділу. В ідеалі користувач міг би вставити весь блок, поля та все, використовуючи автокорекцію чи, можливо, будівельний блок. Потім їм потрібно буде змінити текст у полях. Якщо щось подібне неможливо здійснити у вашому оточенні, такий підхід також не буде практичним.

Основними поняттями використання полів у цій ситуації є: a. поле має код і результат b. деякі зразки польових кодів:

{ SEQ S \c }
{ PAGE }
{ SET T “some text” }
{ REF T }

c. {} - спеціальні парні дужки з кодовими полями, які можна вставити у версії Windows для Word за допомогою ctrl-F9. Ви не можете просто ввести їх за допомогою звичайних {і} символів на клавіатурі d. Ви можете перемикатися між переглядами "коди полів" та "результатами поля" за допомогою Alt-F9

Результати вищевказаних чотирьох полів можуть бути чимось схожими

4
2
(a SET field does not show a result. it just sets the value of a bookmark, in this case the bookmark “T”)
some text

е. Багато типів полів не оновлюються. Щоб побачити правильні результати, виберіть їх і натисніть F9. Часто найпростіший спосіб зробити це - вибрати весь документ за допомогою ctrl-A, а потім натиснути клавішу F9. (запуск у попередній перегляд друку та повторний вихід часто пропонується як варіант, але насправді він не оновлює всі типи полів). Можливо, вам знадобиться зробити це, наприклад, якщо ви змінили пагінацію документа. Для цього типу документа те, що повинен насправді робити користувач

  • показувати результати поля, а не коди
  • з точкою вставки в тілі документа, використовуйте ctrl-A, потім F9

    f. Ви можете вкладати кодові поля певними способами, наприклад результатом

    {IF {SEQ S \ c} = 0 "S дорівнює нулю" "S не дорівнює нулю"}

має бути "S дорівнює нулю", коли поточне значення змінної SEQuence S дорівнює 0, і ви тільки що оновили всі поля. У цьому випадку обидві пари {} повинні бути "спеціальними дужками коду поля"

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

Запропонований нами метод використовує такі поля:

У першій комірці заголовка таблиці є два поля:

{ SET T1 "" } (встановлює закладку T1 порожнім рядком)

{ SEQ S \r1 \h } (встановлює змінну послідовності S на 1, приховує результат)

Кожен заголовок розділу має такі поля, за винятком того, що ви замінюєте текст у полі {SET T} текстом заголовка для цього заголовка

{ SEQ S \h }{ SET T "Front pages" }{ T }{ SET "T{ SEQ S \c }" "...(cont.): { T }" }{ SEQ "P{ PAGE \#0 }N{ SEQ "P{ PAGE \#0 }" }" \r1 \h }

{ SEQ S \h }збільшує значення S на 1 (у розділі 1 S буде 2) і \hприховує результат

{ SET T "Front pages" } встановлює закладку T на "Титульні сторінки".

{ T } (абревіатура для { REF T }відображення значення закладки T

{ SET "T{ SEQ S \c }" … }. У розділі 1 для цього буде встановлено значення T2. У розділі 2 вона встановить значення T3 тощо. Ми встановлюємо T2, T3 і т. Д. До тексту, який потрібно для продовження повідомлення в заголовку сторінки. Таким чином, ви можете або використати повторно значення { T }і додати "... (продовж.):" До нього, як я це зробив вище, або ви можете написати абсолютно інший текст продовження для кожного розділу. Знову ж, це може вимагати від користувача змінити висоту рядка, щоб вони могли бачити весь текст у всіх полях.

{ SEQ S \c } - поточне значення змінної послідовності S.

{ SEQ "P{ PAGE \#0 }N{ SEQ "P{ PAGE \#0 }" \r1 \h } встановлює значення змінної послідовності, яка називається відповідно до номера сторінки, на якій вона знаходиться, та кількості таких полів, які є на сторінці.

(Це передбачає, що ви використовуєте пряму нумерацію (1,2,3,4,5 і т.д.), якщо ви не використовуєте нумерацію сторінок глав (A-1, A-2 тощо), якщо у вас є більше одного розділу Word у документі нумерація є безперервною, наприклад, не починається знову з 1 для кожного розділу.

Якщо ви використовуєте A, B, C тощо, а не 1,2,3, \#комутатор повинен повернути 1,2,3. Але при нумерації сторінок розділів це може працювати, лише якщо номер сторінки був унікальним, наприклад, A-1, A-2, B-3, B-4 тощо, а не A-1, A-2, B-1, B-2 тощо)

Так, наприклад, на сторінці 2, перше поле, створене таким чином, встановить значення змінної послідовності S2N1. Другий встановить значення S2N2. Я називаю цю серію змінних послідовностей як "змінні маркери"

Над кожним рядком заголовка, окрім першого, нам також потрібен рядок з одноклітиною, який ми зробимо максимально тонким (вертикально) і який містить такі коди полів:

{ SEQ "P{ PAGE \#0 }N{ SEQ "P{ PAGE \#0 }" }" \r{ SEQ S \c } \h }

це встановлює змінну маркера на змінну S.

Нарешті, у заголовку (це можуть бути всі заголовки, або ви можете використовувати інший заголовок першої сторінки)

{ IF { SEQ "P{ PAGE \#0 }N1" \c } = 0 "{ "T{ SEQ S \c }" }" "{ "T{ SEQ "P{ PAGE }N1" \c }" }" }

Що це говорить

If the first marker on the page has value 0 Then 
  display the continuation text for the section that is current at the end of  
  the page
Else
  display the continuation text for the section number stored in the first marker on the page
End If

Коли ми встановлюємо маркер, ми завжди встановлюємо його значення або 1, або номер поточного розділу. Таким чином, значення маркера завжди буде 0 на сторінці, яка не має маркерів, і в цьому випадку поточний розділ в кінці сторінки такий же, як поточний розділ на початку сторінки.

Якщо перший маркер на сторінці встановлений у 1, це маркер початку розділу, а на сторінці немає більш раннього маркера кінця розділу. Це означає, що у верхній частині сторінки у нас є заголовок розділу, тому ми відображаємо T1, тобто порожній текст.

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

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


0

Repeat as header row at the top of each page повинен працювати для вас.

Після створення таблиці натисніть кнопку Table propertiesВибрати, Rowа потім виберіть опцію Repeat as header row at the top of each page.

введіть тут опис зображення


У ньому вже є запущені заголовки, які генеруються автоматично. Проблема полягає в тому, що багато назв розділів потрібно вводити вручну. Я спробував навпаки, створивши окремі таблиці для кожного розділу, але це в основному просто створює більше роботи, оскільки я повинен робити заголовки стовпців І заголовки розділів вручну.
superuserb49345

Гм ... ви могли б надати зразок файлу?
lowak
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.