Создание длинной таблицы с повторяющимися заголовками столбцов и разделов

на моем рабочем месте мы делаем много версий 5-7-страничного документа, который в основном является одной длинной таблицей в Word 2010. В повторяющейся строке заголовка указан тип информации в каждом столбце.

проблема в том, что это занимает целую вечность, чтобы сделать названия разделов вручную. Члены моей команды должны вставить новую строку для заголовка раздела. Вручную объедините ячейки в одну большую ячейку заголовка, затем вручную измените боковые границы на белые. Затем, если раздел перетекает на следующую страницу, они имеют чтобы создать новую строку с именем заголовок раздела (продолжение).

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

Я чувствую, что слишком много часов было потрачено на этот процесс и должен быть способ автоматизировать некоторые или все. Я также открыт для использования другого программного обеспечения, чем Word, если оно дешевое или бесплатное для коммерческого использования. Любые предложения приветствуются.

29
задан Der Hochstapler
23.12.2022 22:57 Количество просмотров материала 2438
Распечатать страницу

2 ответа

я не думаю, что будет простой способ достичь этого макета, но я надеюсь, что кто-то подумает о более простом подходе...

я могу придумать два основных подхода, которые вы могли бы принять. На данный момент я предполагаю, что в документе нет других верхних и нижних колонтитулов. Я опубликовал документ, показывающий, как подход два будет работать at

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

вероятно, было бы лучше посмотреть на это и посмотреть, если это даже близко к тому, что вам нужно, прежде чем читать дальше.

подход один я думаю, потребуется некоторые макросы VBA, чтобы заставить его работать. Что бы вы сделали это

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

в этом случае заголовки столбцов основной таблицы всегда будут выше "заголовков разделов", не будет "cont."тексты (хотя вы, возможно, сможете это исправить, используя kludge), и вам придется иметь дело с тем, что заголовки столбцов отделены от данных. Это означает две вещи:

  • там будет быть вертикальным разрывом между заголовками и данными (вы может, вероятно, уменьшить это, гарантируя, что строка заголовков выше чем заголовок документа)
  • ширины колонки могут поменять от таблицы к таблице, привинчивая вверх

    выравнивание horizintal. Только так я думаю, что вы сможете исправить

    это легко было бы запустить макрос (VBA), который применял тот же

    ширина столбцов для каждой строки в каждой таблице. Если ваши пользователи не

    разрешается использовать макросы VBA и / или макет таблицы может быть более сложным чем ваш пример документа предполагает (например, вы когда-нибудь объединить / разделить

    столбцы) тогда это, вероятно, не будет практичным подходом.

подход два было бы сохранить макет таблицы у вас есть, но использовать некоторые коды полей слово, чтобы вставить заголовок на каждой странице.

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

единственный способ, которым я знаю, как это сделать, - использовать некоторые необычные поля SEQ для отслеживания заголовков разделов и решать, что должно отображаться в заголовке каждой страницы. Чтобы это сработало, пользователи должны иметь возможность работать с кодами полей (к сожалению, они выглядят сложными и их довольно легко сломать). Кроме того, слово работает очень трудно сохранить верхние и нижние колонтитулы, а иногда может немножко запутаться, когда есть много полей страницы-зависимых значений в этих областях. Таким образом, это, как правило, не работает так хорошо, когда документ становится больше - я проверю и посмотрю, работает ли он для вашего типа и размера документа.

конкретный подход, который я описываю здесь, делает некоторые предположения о том, что вы хотите в верхней части каждая страница:

  • ничего в верхней части первой страницы
  • ничего в верхней части страницы, если первая строка на странице заголовок раздела
  • в противном случае, продолжение текста с предыдущей страницы.

документ я выложил образцы необходимые поля. Для каждого заголовка раздела пользователю потребуется вставить две строки таблицы, содержащие несколько полей. Это совершенно непрактично, если у пользователя нет механизма это позволяет им делать это легко. Например, если они настроили две строки как форматированную запись автозамены под названием "seched", то все, что им нужно сделать, это ввести

seched

пробел

в начале строки таблицы, и две строки будут включены. Есть и другие возможности.

что я предполагаю, что ваш стартовый документ Word бы (по крайней мере) первая строка (заголовок) таблицы и первый раздел заголовок, т. е. "титульные страницы" в образце документа. двухрядный блок в начале каждого последующего заголовка раздела. В идеале пользователь мог бы вставить весь блок, поля и все, используя автозамену или, возможно, строительный блок. Затем им потребуется изменить текст в полях. Если что-то подобное невозможно в вашей среде, этот подход также не будет практичным.

ключевые понятия для использования полей в этом ситуация выглядит следующим образом: a. поле содержит код и результат b. некоторые примеры кодов полей:

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

c. { }- Это специальные пары фигурных скобок кода поля, которые можно вставить в Windows-версии Word с помощью ctrl-F9. Вы не можете просто ввести их усино gthe обыкновенных { и } символы на клавиатуре 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

e. Многие типы полей не обновляются. Чтобы увидеть правильные результаты, необходимо выбрать их и нажать клавишу F9. Часто, самый простой способ сделать это-выделить весь документ с помощью ctrl-a, затем нажать F9. (переход в предварительный просмотр печати и снова часто предлагается в качестве опции, но на самом деле он не обновляет все типы полей). Это может потребоваться, например, при изменении нумерации страниц документа. Для этого типа документа, что пользователь должен действительно do is

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

    f. Коды полей можно вложить определенным образом, например, в результате

    { если { СЛ З \С } = 0 "С равна нулю' "не ноль" }

должно быть "s равно нулю", когда текущее значение переменной последовательности S равно 0, и вы только что обновили все поля. В этом case, обе пары { } должны быть "специальными фигурными скобками кода поля"

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

метод, который я предлагаю использует следующие поля:

в первой ячейке заголовка таблицы есть два поля:

{ 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, с будет 2) и \h скрывает результат

{ SET T "Front pages" } устанавливает закладку T в "первые полосы".

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

{ SET "T{ SEQ S \c }" … } . В разделе 1 это установит значение T2. В разделе 2, он установит значение T3, и так далее. Мы устанавливаем T2, T3 etc. к тексту хотим для продолжения заметить в шапке страницы. Таким образом, вы можете либо повторно использовать значение { T } and prepend"... (продолжение.): " к это, как я уже делал выше, или вы можете написать совершенно другой текст продолжения для каждого раздела. Опять же, это может потребовать от пользователя изменения высоты строки, чтобы они могли видеть весь текст во всех полях.

{ SEQ S \c } - текущее значение переменной последовательности S.

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

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

если вы используете A, B, C etc. а не 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, т. е. пустой текст.

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

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

1
отвечен 2022-12-25 06:45

Repeat as header row at the top of each page должно работать для вас.

когда вы создали таблицу, нажмите кнопку Table properties выбрать Row и выберите опцию Repeat as header row at the top of each page.

enter image description here

0
отвечен lowak 2022-12-25 09:02

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх