Формы в Word (вопросы и ответы). Часть 1. Форматирование и защита ячеек таблиц

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

Вопрос 1. Как установить форматирование в ячейках таблиц в формах.

Например, мы хотим, чтобы данные в одной из колонок были выровнены вправо. Пусть, это будет колонка с контрольной датой из предыдущей статьи (хотя чаще такое требуется для числовых, денежных, и .т.д полей – но у нас таких просто нет в наличии Улыбка)

image

Казалось, бы что сложного: выделить ячейку и нажать кнопку выравнивания…

image

Увы! Стоит вам подставить в этот шаблон реальные данные… да, что данные – просто переоткрыть шаблон – как все форматирование вновь собьется и придет к исходному.

У меня есть подозрение, что виной всему механизм привязки данных – если ваши поля привязаны к XML, текст документа каждый раз при открытии перестраивается заново. Если у вас чистый шаблон – по пустой XML. Поэтому, есть подозрение, что если создавать шаблон без привязки к XML (просто вставлять content controls) форматирование теряться не будет. Но я это предположение я даже не проверял – формы без привязки мне практически не нужны.

Что же делать, неужели все так плохо? К счастью, выход нашелся, причем вполне приличный. Итак по шагам:

Шаг 1. Создаем новый стиль для форматирования ячеек с датой

Для этого:

  • Открываем шаблон
  • Выделяем ячейку с датой (обратите внимание – именно ячейку! это можно понять по виду курсора)

image

  • Открываем панель стилей и выбираем создание нового стиля (пункт Create a Style)

image

Шаг 2. Задаем параметры нового стиля

  • Задаем имя нового стиля и сразу же открываем окно его модификации:
  • image

  • В окне настройки стиля проверяем, стиль задается и для параграфа и для символов (иначе не будет доступна опция выравнивания) и сразу выставляем выравнивание вправо.
  • image

  • Сохраняем и закрываем документ.
  •  

    А вот и получившийся результат:

    image

    Кстати, теперь в любой момент можно открыть созданный нами стиль (он виден в списке стилей) и изменить, например, параметры текста (скажем, сделать его полужирным и красным).

    Вопрос 2. Как сделать так, чтобы внутри Repeating Section нельзя было изменять текст нигде, кроме полей ввода.

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

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

    image

    – значит текст не сопоставится ни с каким XML-тэгом и извлечь его просто так не получится.

    Способ борьбы я упомянул вскользь еще в прошлой статье, но это “вскользь” сделало его почти незаметным, поэтому повторю еще раз:

    • Открываем параметры Repeating Section. У нас это сделать не сложно, т.к. все секции у нас именованные. Достаточно щелкнуть на “шильдик” Решения и на панели Developer выбрать пункт Properties

    image

    • В окне свойств ставим галочку “Contents cannot be edited” (или “Содержимое нельзя редактировать” в русской локализации)

    image

    • Закрываем окно, включаем защиту всего документа, наслаждаемся полученным результатом Улыбка

    Ну и файлы для изучения и экспериментов:

    This entry was posted in MS Office and tagged , , . Bookmark the permalink.

    Leave a Reply

    Fill in your details below or click an icon to log in:

    WordPress.com Logo

    You are commenting using your WordPress.com account. Log Out / Change )

    Twitter picture

    You are commenting using your Twitter account. Log Out / Change )

    Facebook photo

    You are commenting using your Facebook account. Log Out / Change )

    Google+ photo

    You are commenting using your Google+ account. Log Out / Change )

    Connecting to %s