Формы в 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.

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

    1. Алия says:

      Благодарю за столь подробный разбор !

    2. termum says:

      Спасибо за статью! Есть такой вопрос, не могу найти решение. Можно ли заменить текст-подсказку в “подложке” формы? Мне нужно создать форму для англоязычных партнеров, а Word русский. Т.е. мне нужно, чтобы высвечивалось не “Место для ввода текста”, а, допустим, “Insert your text here”.

      • Очень рад, что мой скромный труд вам пришелся по душе.
        Что касается вашего вопроса, то рекомендуют делать как описано в статье Modify Content Control Placeholder Text

        Если кратко, то там предлагается следующая схема:
        – добавляем нужные контролы на форму
        – переключаемся в режим конструктора
        – встаем внутрь(!) текста “подложки” (чтобы не сломать стиль форматирования)
        – набираем нужный текст
        – удаляем старый текст по краям
        – выключаем режим конструктора

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

    Leave a comment