Журнал о системах электронного документооборота (СЭД)
Разные задачи в ECM

Электронные формы в Microsoft Word 2007: простые формы "парой кликов"

  62 комментариев Добавить в закладки

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

Что тому причиной, я не знаю, возможных вариантов много: и ориентация на в целом невысокую компьютерную грамотность (хотя то, что было актуально еще в начале 2000-х годов, сейчас почти неправда), и укоренившееся в сознании главенство бумажного докмента, и Бог его знает что еще... Но вот одно из таких потенциальных препятствий, мне хотелось бы обсудить, и даже, если получится свеcти его на "нет". Этим препятствием, является то, что, в основном, работа с электронными формами реализуется специальными средствами, с которыми большинство пользователей компьютеров не сталкивались вовсе или что-то слышали, но слабо представляют что это и зачем нужно. Ну скажите, многие ли в работе сталкивлись с такими продуктами как Microsoft InfoPath или Adobe Acrobat (хотя слышали о них многие), а скольким приходилось хотябы слышать, например, об IBM Workplace Forms (кроме тех, конечно, кто внедряет или использует решения на базе Lotus)?! Собственно, по моим ощущениям, перечисленные продукты (впрочем, как и все остальные продукты для работы с электронными формами) у нас в России, почему-то, воспринимаются как некий аналог редактора экранных форм в какой-нибудь популярной среде разработки - т.е. считаются, инструментом разработчика, а не пользователя ("а зачем нам еще один редактор форм для программиста - ему и своего хватает, да он и сам говорит, что оно ему не надо - он сделат лучше")!

Поэтому, узнав что инструменты для работы с электронными формами (хотя сами разработчики предпочитают обходить этот термин - что в общем-то понятно, для электронных форм есть InfoPath) в Word 2007 был серьезно переработан, я выбрал время чтобы познакомиться с ним по-подробнее. И результат, должен признать, меня ничуть не разочаровал! А приведенный ниже пример, надеюсь, кому-то сможет помочь начать использовать новые возможности.

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

  • Структуризация и, как следствие, упрощение ввода и контроля вводимых пользователем данных. Например, если в качестве электронной формы Вы используете шаблон заявления, то можно явно в тексте выделить поля (а также указать их тип, и, если позволяет среда для заполнения форм, выбрать элемент управления, который будет использоваться при вводе) для ввода имени и реквизитов заявителя, дат документа, его номера (который может заполняться автоматически), и других обязательных реквизитов. Если среда при этом позволяет, то можно прямо "на лету", проверять корректность заполнения полей. Соответсвенно, будет меньше ошибок ввода и меньше ручной работы по проверке.
  • Возможность автоматической обработки данных форм. От элементарного: "достать данные из полей и положить их в один Excel-файл, а там что надо, пусть то и делают", до полноценной автоматической обработки форм в полностью автоматических процессах. Для обычного неструктурированного документа сама задача "достать данные" может превратиться в крайне нетривиальную задачу анализа форматирования, взаимного расположения частей, а иной раз и содержимого текста.

 

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

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

 

Шаблон заявления со строками подстановки

 

Форма шаблона совсем не сложная, но всегда найдется кто-то "особо одаренный", который умудится что-то напутать, написать лишнего или просто случайно стереть лишнее. А компания у вас достаточно большая чтобы процент таких одаренных стал бы серьезной проблемой... А потому, за работу!

Первым делом, вместо строчек вида [ФИО заявителя] мы вставим поля ввода. Найти эти поля можно на закладке "Разработчик", в группе "Элементы управления":

 

Элементы управления в Word 2007

 

Для задания наших полей мы воспользуемся следующими элементами:

  • Текст для поля [ФИО заявителя]
  • Поле со списком (или раскрывающийся список) для полей [год_нач] и [год_кон]
  • Выбор даты для [дата_нач], [дата_кон], [дата_вых] и [дата_подписи]

В результате наш документ приобретет примерно следующий вид (все прежние поля ввода заменились серым текстом с надписями навроде "Место для ввода даты", причем при если щелкнуть на любой из них будет видно, что это поле ввода):

 

Шаг 1. Вставка полей ввода

 

Теперь нужно пройтись по всем только-что вставленным полям ввода и указать для них дополнительные настройки. Вызвать окно свойств для поля можно выбрав его, и нажав кнопку "Свойства", все в той же группе "Элементы управления". В свойствах мы укажем:

  • названия полей
  • для полей с датами - формат отображения "dd.MM.yyyy"
  • для полей с выбором (которые у нас представляют года) - перечислим несколько лет.

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

 

Окно свойств для элемента "Год окончания периода отпусков"

 

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

 

Предварительный результат

 

Результат не плох, однако, остается еще одна проблема - случайная порча остального текста документа (от серьезной преднамеренной порчи, увы, защититься куда как сложнее). Чтобы защитить документ от случайного изменения мы воспользуемся той же закладкой "Разработчик", выбрав пункт "Защитить документ", а в нем включив элемент "Ограничить форматирование и редактирование":

 

Пункт "Ограничить форматирование и редактирование"

 

В результате откроется панель ограничения форматирования и редактирования, в которой мы последовательно:

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

 

Настройка параметров защиты документа

 

Все!!! Теперь документ позволяет вводить поля формы, но запрещает напрямую менять остальной текст (при этом введенные данные могут быть любой длины - текст автоматически будет переформатирован под вводимые значения).

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

P.S. Те, кому приходилось работать с подобными механизами в Word ранее, наверняка заметят, что ничего принципиального нового я не рассказываю - внедрять в документы элементы управления ActiveX или вставить custom поля можно было и раньше.

Я с этим соглашусь, но замечу, что есть несколько "но", которые, по-моему, очень серьезно меняют расклад, а именно:

  • В отличие от старых ActiveX элементов, новые представляют собой части разметки, а потому у них нет проблем с их позиционированием внутри текста, чем очень страдали последние. Были, конечно, еще и встроенные элементы, но те, увы, обладали очень ограниченной функциональностью (т.е. обойтись без ActiveX было практически не реально).
  • Второй аспект связан с более общими изменениями в Microsoft Office, а имено переходом на основанный на xml (и опубликованный!) язык разметки и стандартные deflate-файлы в качестве контейнеров. Что это дает? В первую очередь, возможность извлечения и обработки данных форм без использования клиентского API самого Office или встраивания специальных макросов в документ.

 

В продолжение темы:

 

Ещё материалы автора
Похожие записи
Комментарии (62)
Андрей Подкин 24 февраля 2009 г. 12:17  

Ложка дегтя в бочку меда: в OpenOffice.org 3.0 такие формы не работают

Антон ИСУПОВ 25 февраля 2009 г. 08:16  

 
Ложка дегтя в бочку меда: в OpenOffice.org 3.0 такие формы не работают

А был ли деготь? Думаю у ребят есть альтернатива. Ну если нет, то через год-полтора и они подтянуться. Главное чтобы использование эл. форм в Word2007 начал набирать популярность...

 
Алексей Блохин 17 июля 2012 г. 13:29  

Очень помогла статья. Спасибо.

Возник вопрос. Мне надо, чтобы сделанные мною в документе поля заполнялись сотрудником не все, а по выбору. Но при этом распечатываются слова - "Выберите элемент" или "Место для ввода текста".

Можно ли как то скрыть "пустые" поля при печати?

Михаил Романов 17 июля 2012 г. 14:38  

Алексей, очень рад, что статья оказалась вам полезной. Это как-то... вдохновляет!

Что касается вашего вопроса, то мне придется задать встречный - вас устроит поведение когда незаполненные поля просто не печатаются, но продолжают занимать такое же место какое занимает "замещающая фраза". Т.е. в тексте останется пустое место.

Или же вам нужно поведение, когда незаполненное поле при печати "схлопывается" и никакого места не занимает?

Если вас устроит первый вариант, то все можно сделать простой настройкой. Вот тут описана идея Setting Empty Placeholder Text for a Content Control - я к сожалению сейчас немного занят, и не могу описать процедуру подробнее, но если вы немного подождете (день-два) я постараюсь сделать пошаговую инструкцию. Идет?

Если же вам нужен второй вариант, то, увы, с ходу могу предположить, что это можно сделать программно (хотя, судя по ссылке, которую я привел, там есть свои сложности) - т.е. придется написать макрос или Add-In, которые нужно будет внедрять в шаблон документа.

Алексей Б. 17 июля 2012 г. 15:15  

Михаил большое спасибо за совет.

Конечно первый вариант устраивает. Я делаю бланк для протокола мед. исследования. Если патологии нет, то дополнительные поля не заполняются, если да то идет выбор полей (описание патологии). Пока выхожу из положения так: Создаю в Свойствах поля - Дополнительное свойство и присваиваю ему Краткое имя - пробел, Значение оставляю пустое. Неудобство метода - Даже если патологии нет, то все эти поля надо кликнуть и выбрать этот пробел.

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

Я предполагал, что в самом Word есть такая настройка при печати схлопывать пустые поля (так как этот служебный текст горит светло-серым цветом и по логике печататься не должен), но видимо ошибался. В word 2010 интересно так же?

С нетерпением ждем возможное решение!!!

Минич Денис 18 июля 2012 г. 09:42  

От статьи про сокрытие полей перешел сюда, ранее этот полезный материал остался мною не замеченным. Спасибо.

Алексей Б. 18 июля 2012 г. 12:47  

Прекрасное, элегантное решение этого вопроса. Все получилось. Даже схлопывается. Огромное спасибо.

Александра Тараканова 18 июля 2012 г. 13:18  

Михаил, Ваша статья очень помогла! Я создала документ с такими формами для заполнения, но мне еще необходимо сделать форму для вставки в нее изображений, например моей фотографии. Скажите, пожалуйста, такое возможно? если да, то как?

 

Михаил Романов 18 июля 2012 г. 14:32  
Александра, я очень рад (даже не верится, что спустя три года после написания к статье вновь возник такой интерес)!
 
По поводу вашего вопроса:
Я создала документ с такими формами для заполнения, но мне еще необходимо сделать форму для вставки в нее изображений, например моей фотографии. Скажите, пожалуйста, такое возможно? если да, то как?
 
Да, это сделать можно. Для вставки изображений на форму есть специальный элемент. В английской версии он называется Picture Content Control (русской у меня сейчас нет под руками).
Находится он там же, где и все остальные, т.е. на закладке "Разработчик", в группе "Элементы управления". Если посмотрите на вторую картинку в этой статье, то он - третий в первом ряду элементов управления (такая фотография от Polaroid).
 
Когда вы добавите его на форму у пользователя появится такая большая область, со значком картинки внутри. Когда пользователь будет щелкать по этой иконке у него будет открываться диалог выбора файла с изображением.
 
К сожалению большего я вам рассказать не могу, т.к. сам с подобным элементом не работал.
Александра Тараканова 18 июля 2012 г. 15:12  

Михаил, огромное Вам спасибо, но у меня Word Mac 2011 и у меня вообще нет надписи "Констурктор" и этой картинки "полароида", сейчас попробую на PC

Михаил Романов 18 июля 2012 г. 15:44  

Увы, Александра, Office for Mac - очень отличный от обычного офиса продукт. Поэтому там поведение и функционал могут отличаться и очень значительно.

Александра Тараканова 18 июля 2012 г. 17:05  

Михаил, можно Вас помучить?) на PC поставила эти формы, заблокировала документ, а как теперь туда вставить картинку? все действия неактивны, а этот файл предназначается для женщин в возрасте.... ну сами понимаете) все должно быть просто

Михаил Романов 18 июля 2012 г. 17:42  

Александра, я только что попробовал сделать документ-форму со вставкой картинки и затем ее заблокировать. Возможность вставки изображений осталась.

Вы уверены, что правильно сделали блокировку (т.е. оставили возможность заполнять формы)?

P.S. Кстати да, после вставки, картинку уже не поменяешь - можно только сказать Undo.

Алексей Б. 18 июля 2012 г. 23:35  

"P.S. Кстати да, после вставки, картинку уже не поменяешь - можно только сказать Undo."

Я поступаю проще. Если рисунок выбран в заблокированном документе (например, из архива документов, т.е. Назад уже не нажмешь), то формой другой уже не вставишь. Я копирую нужный рисунок и вставляю его в форму Ctrl+V. Александре будет это полезно при изменении фотографии по прошествии времени.

Алексей Б. 24 августа 2012 г. 14:35  

В процессе работы с запароленными формами выявились интересные моменты. Хочу поделиться. Не для кого не секрет, что в ячейки таблиц Word можно вводить формулы для простейших расчетов. Как это сделать в запароленном документе с формами. Создать таблицу - внести формулу в ячейки стандартными способами - И только потом в эти же ячейки добавить формы ввода текста (наоборот не получается). Вводите в формы ввода текста (ячейки таблицы) цифры, а что бы получить результат в ячейке вывода кликните и нажмите F9. Ячейка обновится с результатом. Но это не работает в заблокированном документе. Выход прост - Наведите курсор на ячейку вывода результата и сразу кликните правой кнопкой мыши выбрав пункт Обновить поле.  Левая кнопка и F9 в таком документе (ячейке) не работают.

Михаил Романов 24 августа 2012 г. 15:13  

Алексей, я чувствую, что вам нужно собрать свой опыт в отдельную статью (что-то в стиле "Электронные формы. Советы и трюки") и где-то её разместить, например, на том же EJ

Алексей Б. 24 августа 2012 г. 16:27  

Я не профессионал, поэтому самое место в коментах. Глядишь кто то и не наступит на "грабли". Всегда читаю комментарии и вылавливаю "зерна из плевела" :)

Михаил Романов 24 августа 2012 г. 18:10  

Ну... это вам, конечно решать. Только не стоит думать, что хорошую статью может написать только профессионал.

Да и кого считать профессионалом? Уж точно не меня - я не работаю в области управления документами уже 2 года, это скорее хобби (или память о прошлом)

Алексей Б. 24 августа 2012 г. 21:14  

Тут еще талант доходчиво объяснять должен быть. Вам это как то удается. Все сразу становится понятно. Да и правильная терминология должна быть.

Тема очень нужная и интересная. Не на одном форуме не обсуждаемая. И главное очень просто реализуемая. Сейчас перехожу к извлечению и вставке данных по вашей же статье.

Yana Ivanova 01 марта 2013 г. 23:46  

 

Михаил, добрый вечер!
С интересом прочитала Вашу статью, найдя ее в поиске. 
Предисловие - я секретарь на уровне - из всего офиса умею открывать ворд и владею слепой печатью. То есть я не то что не программист, а вообще чайник.
После того, как мне срочно понадобилось сделать сложный документ-Форму для рассылки, я по дурости за полдня освоила InfoPath 2010 (она у меня случайно оказалась установленной от офиса), сделала в нем красивейшую форму на 10 страниц, после чего обнаружила, что на другом компьютере без этой программы заполнить ее никто не сможет (а мне надо рассылать форму людям с абсолютно неизвестными программами на компьютерах и в основном далеким от этого вообще).
Еще за час освоила формы в АдобАкробат - бросила на стадии понимания, что поля по размеру вводимого текста не расползаются и документ получается некрасивым и неудобным для того, кто его заполняет и просматривает.
Стала искать в инете ответ на вопрос - в чем еще можно создавать формы. С интересом прочитала Вашу статью. Порадовалась, что нашла ответ - все просто и понятно. Форма вроде удалась..
Но когда я перешла ко второй части - как извлекать данные, я поняла, что это - не для меня, я ничего не понимаю. 

Отсюда вопрос, извините, если глупый, - можно ли просто (парой кнопок типа "экспорт куда-то") вытащить все эти заполненные данные из 100 присланных форм в табличку типа Эксель? Наполнение полей у меня очень простое - в основном это большие тексты, несколько дат и пара "галочек" - никаких "сложных полей"..

Михаил Романов 02 марта 2013 г. 08:41  

Яна, здравствуйте.

Во-первых, примите моё искреннее восхищение, вашими достижениями. Поверьте, далеко не каждый специалист (или считающий себя таковым) имеет представление об электорнных формах и инструментах их подготовки. Вы же освоили сразу 3 (причем тот же InfoPath, как это ни странно, в России очень мало известен).

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

Yana Ivanova 04 марта 2013 г. 18:43  

Михаил, добрый вечер! Спасибо за Ваш ответ, конечно, я подожду!

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

А можно Вам задать еще вопрос про формы. Мне его Гуглу не сформулировать так, чтобы он выдал адекватный ответ, могу только "на пальцах":

можно ли в формах (допустим в Wordе?, или в чем возможно?) сделать такие группы полей, которые бы размножались в зависимости от ответа на предыдущий вопрос? и тогда становились обязательными?
т.е. если человек на вопрос
3.1. в скольких конференциях Вы участвовали за прошлый месяц (поле)
ответил - 0, то подпунктов нет,
ответил - в 3-х, то ему выдаются 3 группы полей для заполнения
3.1.1. дата (поле) город (поле) тема (поле)
3.1.2. дата (поле) город (поле) тема (поле)
3.1.3. дата (поле) город (поле) тема (поле)

если ответил - в 4-х, то они размножаются до 4-х ответов 3.1.1. - 3.1.4.
И если он уже ответил, что участвовал в стольки-то, то заполнение данных во всех подпунктах - обязательно. А если не хочет заполнять, скажем, 4ый подпункт, то пусть исправляет ответ в п.3.1. с 4 на 3.

Я понятно излагаю? Просто мне сразу после создания первой в жизни формы пришла в голову идея, что если ответов несколько, то я же заранее не знаю, сколько полей нужно сделать для ответов?

Посоветуйте мне, если сможете, какую-нибудь умную, но несложную книжку про это. 

Михаил Романов 04 марта 2013 г. 18:54  
можно ли в формах (допустим в Wordе?, или в чем возможно?) сделать такие группы полей, которые бы размножались в зависимости от ответа на предыдущий вопрос? и тогда становились обязательными?
Это уже некоторая логика поведения пусть и очень простая "если X, то сделать Y". Для Word это сделать скорее всего можно, но потребуется программирвоание.
 
Нужно понимать - Word инструмент, который не затачивался Microsoft для электронных форм. Для этого у Microsoft были InfoPath или web-формы на SharePoint.
 
Посоветуйте мне, если сможете, какую-нибудь умную, но несложную книжку про это.

Увы и ах, есть книги по конкретным продуктам - тому же InfoPath или SharePoint, но какой-то общей, типа "E-forms для всех" я не знаю.
И по Word, тоже ничего утишительного не присоветую.
 

 
Yana Ivanova 04 марта 2013 г. 19:04  

Согласна на "умную, но не очень сложную" книжку по InfoPath :)) Я ее насильно внедрю на работе!

Михаил Романов 05 марта 2013 г. 07:22  
Согласна на "умную, но не очень сложную" книжку по InfoPath :))

Даже не знаю, что вам посоветовать.
В свое время мне понравилась книга Designing Forms for Microsoft Office InfoPath and Forms Services 2007. У нее есть вторая версия Designing Forms for SharePoint and InfoPath: Using InfoPath Designer 2010 (2nd Edition).

Но! Это книги, которые, в конечном счете, рассчитаны на программистов. Хотя первая часть не содержит ни строчки кода, даже она может показаться сложноватой.

Увы, другого ничего с ходу предложить не могу.

Yana Ivanova 05 марта 2013 г. 13:25  

Это Вы, типа, пошутили над ребенком, да? Там по ссылке открывается не текст, а реклама, да еще и не по-русски.. :)))

Михаил Романов 05 марта 2013 г. 14:05  
Это Вы, типа, пошутили над ребенком, да?

Ни в малейшей степени.

Там по ссылке открывается не текст, а реклама, да еще и не по-русски.. :)))
Это сайт Amazon - одно из крупнейших Internet-магазинов книг. Так что теперь вы с ним знакомы и можете захаживать, когда вам понадобятся книги.
 
Увы, но правила данного ресурса запрещают выкладывать ссылки на контрофактный (пиратский) товар (это при условии, что я бы знал, где можно найти данную книгу помимо официального магазина).
 
А что касается языка, то тоже увы, я не знаю ни одной книги по InfoPath на русском, потому рекомендовать не решусь.
 
Попробуйте сами поискать отзывы, например, на такие книги:

P.S. И я правильно понимаю, что с решением на базе Word вы решили заязать (не устраивает по возможностям)? Если да, то имейте в виду, Office c InfoPath это версия Microsoft Office Professional Plus, которая стоит не дешево (процентов на 50% ваианта Standard).

Yana Ivanova 05 марта 2013 г. 15:02  

Михаил, спасибо, попробую! Русскими буквами книжки выглядят гораздо лучше! :)))

Нет-нет, я не решила завязать! Первую созданную мной форму в ворде я уже отдала шефу - он уже тащится (просто он же не поймет, что размножить поля с ответами, если их надо вписать несколько там не получится, рассылаю бланки я, собираю тоже я, а он посмотрел на красивую презентацию новой "фишки" и пообещал премию к 8 марта, думаю на пару тысяч расщедрится, если не забудет, но я не из-за этого, мне просто интересно!). Но поскольку я сама это уже поняла, надо двигаться дальше - и делать новую лучше. Люди-то поймут - первый же человек, у кого заполнить не получится несколько ответов в 1 вопросе!

А офис у нас стоит - безлимитный по числу машин, лицензионный, 2010-ый, совершенно случайно похоже стоит - и весь с InfoPath (всем ставили все одинаковое), так что это - не проблема.

Михаил Романов 14 марта 2013 г. 08:36  

Яна, я провел небольшой поиск, но  увы, нашел только только вот такой макрос для Word, который позволяет просто задать форму в Word и не выполняя привязку к узлам XML выгрузить все данные либо в Excel, либо в Word (табличкой).

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

И да, я сам его не пробовал - совсем нет времени.

P.S. Если бы вы смогли сделать первую часть второй статьи (там где поля формы привязываются к XML-узлам), то выгрузку было бы сделать довольно просто.

P.P.S. Впрочем, если вы решили изучать InfoPath, и у вас есть возможность его использовать на предприятии - это заведомо лучший вариант.

Михаил Романов 21 сентября 2013 г. 18:08  

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

Единственный серьезный недостаток - все описанное работает только в Office 2013 (как создание, так и заполнение).

Собственно вот ссылка на статью Таблицы в формах Word 2013. Надеюсь, я описал все достаточно просто и доступно.

Alexandr  Varzanov 27 февраля 2015 г. 15:16  

Михаил, создаю форму с переключателем (кружок с точкой), т.е. вариантом ответа на вопрос "да" и "нет".

Вопроса два. И два переключателя на каждый вопрос. Т.е. две группы "переключателей" в одном документе. Подскажите, как организовать разделением формы переключатель на две группы? В противном случае получается вставить 4 переключателя, которые переключаются между собой одновеменно,  но не между переключателями конкретного вопроса.

Михаил Романов 27 февраля 2015 г. 16:36  

Добрый день, Александр.

Немного не понял, какой контрол вы используете. По описанию напоминает ActiveX, которые Microsoft предлагает считать устаревшими и в формах Word не использовать. Как минимум, все описанные в этой и связанных статьях механизмы извлечения данных работать не будут.

Можете ли вы перейти на "список" или "выпадающий список"?

Михаил Романов 27 февраля 2015 г. 16:50  

Прошу прощения, отправил раньше, чем закончил писать...

Если от ActiveX отказаться нельзя, то развести "переключатели" довольно просто:

  • щелкаете на каком-нибудь контроле и в контекстном меню выбираете Properties
  • в окне свойств находите поле GroupName и пишете там какой-нибудь идентификатор. Например, для ответов из первого вопроса пишете "Q1", для второго - "Q2", и т.д.

Вот как на картинке (кликабельно)

Надеюсь, понятно описал...

Alexandr  Varzanov 27 февраля 2015 г. 18:02  

Михаил! Спасибо за подсказку, описано понятно! Все заработало!

Если не отказать, то чем пользоваться? Опросник с функцией переключателя ведь как-то надо создать?

Alexandr  Varzanov 27 февраля 2015 г. 18:03  

Если отказаться от ActiveX, то чем пользоваться?

Михаил Романов 28 февраля 2015 г. 09:56  

Отлично. Я рад, что все получилось.

Если отказаться от ActiveX, то чем пользоваться?

Вопрос хороший...

 

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

 

 

Вообще, мое мнение - формы в Word, это не полноценные электронные формы. Это всего лишь способ создавать документы с динамическими элементами. Вот, например, как в статье вверху, или вот в этих 2-х Таблицы в формах Word 2013 и Программная генерация документов-форм в Word (простите за невольную саморекламу).

 

 

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

 

 

Вот и получается, что под такие задачи подпадают:

 

 

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

 

Именно под такие задачи MS ввела в Word такие элементы как Content Controls (и они же заменили прежние ActiveX). Попутно мы получили: возможность легко и просто извлекать эти самые введенные элементы из документа (без всякого анализа текста и прочих ухищрений) и наоборот - задавать эти данные извне и на основе них генерировать готовые документы.

Но это, так сказать, лирика. Если вернуться к вашему вопросу "чем заменить", то я вижу такие варианты (это с ходу - нужно внимательно изучить каждый):

  1. Перейти на использование Content Controls
  2. Использовать специальные решения для электронных форм.

C Content Controls проблема в том (как я писал выше), что они не предназначены для задач кроме конструирования текста. Поэтому, например там не будет Radio Button, которыми вы пользовались. В качестве замены можно использовать выпадающий список, но в него большой текст не поместишь. Поэтому, как вариант делать так:

  • Текст вопроса
  • Тексты ответов промаркированные буквами/цифрами
  • Элемент выбора варианта ответа

Как на картинке:

Как видите, несколько неказистое решение...

Если же говорить о специальных инструментах, то тут надо знать специфику:

  • Что за документы/формы вы готовите
  • Как будете распространять
  • Как планируете обрабатывать результаты

Может статься, что вам проще занести вопросы в какой-нибудь Online-сервис (наподобие того, что есть у Google) и разослать всем ссылку на форму.

Андрей Ботагов 14 апреля 2015 г. 06:56  

Здравствуйте Михаил.

А подскажите, пожалуйста, как сделать заполняемые поля фиксированной длины? Суть в том, чтобы при заполнении поля пользователем, следующий за полем текст не сдвигался.

Михаил Романов 14 апреля 2015 г. 09:39  

Добрый день, Андрей.

Задам уточняющий вопрос: а как должен вести себя документ, если пользователь введет в поле больше символов, чем было рассчитано?

Olga Startseva 16 апреля 2015 г. 18:09  

Здравствуйте, Михаил!

Подскажите, пожалуйста, можно ли, чтобы поле заполнялось один раз и автоматически помещалось в нужные места в документе?   

В документе одно и тоже значение повторяется (используется) несколько раз. Можно ли поставить метку, куда значение поля будет вноситься?

Михаил Романов 17 апреля 2015 г. 07:56  

Добрый день, Ольга.

Да, конечно, сделать это не сложно. Если вы работаете с Office версии до 2013, то посмотрите на статью Электронные формы в Microsoft Word 2007: извлечение и вставка данных, там описывается как создать для полей на основе Content Controls хранилище данных внутри документа (там используется сторонняя утилита).

Ну и схема проста:

  • Вы создаете документ, размещаете поля в нужных местах
  • Все поля, которые должны иметь одинаковое значения, вы привязываете к одной ячейки данных.
  • При необходимости можно даже оставить возможность редактирования только 1 поля. Остальные - закрыть от редактирования.

Если же вы работаете с Office 2013, то там все делается ровно так же, но используется инструмент, встроенный в Office. Прочесть можно здесь Таблицы в формах Word 2013.

Если будут вопросы - пишите.

Olga Startseva 17 апреля 2015 г. 13:10  

Спасибо за ответ. Справилась с помощью кода поля "REF закладка". Возможно, я неточно выразилась, задавая вопрос. Задача решалась просто. Моя ошибка - была невнимательна при сохранении файла, необходимо было при создании шаблона не забывать сохранять как шаблон.

Леонид Николаев 24 июня 2015 г. 08:38  

Здравствуйте, Михаил!

Спасибо за массу полезной информации, которой вы делитесь!
У меня возникла небольшая проблема, решения которой пока не нашел. Мне нужно подготовить в Word 2007 такую форму, чтобы те, кто ее будет заполнять, могли в нее вносить достаточно объемный текст, причем с возможностью форматирования, напр. выделение жирным, курсивом, маркированный список и т.д. Использую для этого элемент формы "Формат RTF". Но проблема в том, что как только я включаю защиту формы, форматирование внутри этого элемента становится недоступным - можно только вводить текст так же как в обычный текстовый элемент. Элемент работает как надо только если форма не защищена.

И еще один вопрос возник. Мне нужно сделать группу независимых переключателей. Элемент формы "Флажок" в Word 2007 находится под кнопкой "Инструменты из предыдущих версий". Напрашивается мысль, что вместо него можно использовать какой-то другой, более современный элемент. Но какой?

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

Леонид Николаев 24 июня 2015 г. 16:46  

Михаил, огромное спасибо! С элементом "Формат RTF" все получилось!
 

Антон Семенов 03 октября 2016 г. 20:25  

Михаил, подскажите в какую сторону копать. Юзер должен заполнять часть док файла, просто ставить даты и выбирать из списка текст который нужен. Я думаю насчёт отдельного окна ввода, юзер там покликал и нужные данные вошли в документ. Можно как то обойтись без визуал бейсика, если нет то есть пару примеров как в бейсике делать ссылку из формы ввода наконкретное место в документе?

Михаил Романов 04 октября 2016 г. 09:44  

Антон, добрый день, задам уточняющий вопрос:

просто ставить даты и выбирать из списка текст который нужен

- я правильно понимаю, что у вас есть некий шаблон документа с полями 2-х видов:

 

  • Даты
  • Выбор из списка предопределенных текстовых фрагментов.

Так?

И по поводу текста - на сколько нужен сложный текст: просто текст без форматирования, или полноценные фрагменты со сложным форматированием?

Firas Hamza 08 декабря 2016 г. 14:32  

Хвала автору!

А можно сделать так чтобы цифры введенные в одном поле, прописывались текстом еще в одном месте? Т.е. я цифрами вбил 3600 руб., и ниже нужно чтобы написалось "Три тысячи шестьсот" руб. и тд.

Заранее спасибо.

Михаил Романов 08 декабря 2016 г. 15:20  
Firas Hamza 08 декабря 2016 14:32
Хвала автору! А можно сделать так чтобы цифры введенные в одном поле, прописывались текстом еще в одном месте? Т.е. я цифрами вбил 3600 руб., и ниже нужно чтобы написалось "Три тысячи шестьсот" руб. и тд. Заранее спасибо.

Увы, тут уже нужна разработка :(

Точнее, есть способ с переводом чисел в слова с помощью форматирования полей Word, но:

- он работает только с числами до 999999

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

- требует нажимать "Обновить поля" (или переоткрывать документ)

- не умеет склонять. Впрочем, если ограничиться сокращениями "руб." и "коп." это не критично.

Если все указанные ограничения не пугают - могу описать способ.

Firas Hamza 08 декабря 2016 г. 15:31  
Михаил Романов 08 декабря 2016 15:20
Firas Hamza 08 декабря 2016 14:32 Хвала автору! А можно сделать так чтобы цифры введенные в одном поле, прописывались текстом еще в одном месте? Т.е. я цифрами вбил 3600 руб., и ниже нужно чтобы написалось "Три тысячи шестьсот" руб. и тд. Заранее спасибо. Увы, тут уже нужна разработка :( Точнее, есть способ с переводом чисел в слова с помощью форматирования полей Word, но: - он работает только с числами до 999999 - не очень надежен по части языка (у меня он всё время переключается и начинает писать по английски - как принудить к русском, чтобы всегда, я не нашел). - требует нажимать "Обновить поля" (или переоткрывать документ) - не умеет склонять. Впрочем, если ограничиться сокращениями "руб." и "коп." это не критично . Если все указанные ограничения не пугают - могу описать способ.

 

Опишите пожалуйста :) Попробую.
А вообще, если еще и это можно, то еще вот что хотел бы, чтобы вводить одну цифру (стоимость аренды в день) а ниже он выводил ее словами, и еще ниже считал столько дней была оказана услуга, у меня там в одном месте выше есть два поля "даты", заезд-выезд, разница между датами и есть количество дней, и тоже выводил ИТОГО словами :)
Простите за столько требований :) И спасибо!!!

 

Михаил Романов 09 декабря 2016 г. 12:14  
Простите за столько требований :)

Ну, такое я формулами Word сделать точно не смогу (моё кунг-фу не на столько сильно, я даже повторить то, что делают тут http://addbalance.com/word/datefields2.htm не смогу) - только макрос или Add-ins, а это уже всяко разработка.

Хорошо, постарюсь сделать за выходные небольшую инструкцию

 

 

Сергей Шарапов 10 ноября 2017 г. 23:59  

Михаил, здравствуйте. Подскажите, как в ворде сделать так, что бы текст можно было вводить только в конкретном месте. Например я создал форму ( поле ) в центре и слева вверху ( гипотетически) и текст могли вводить только в в центре и слева вверху, и ни как не могли выйти за рамки этих полей/формы. 

Михаил Романов 11 ноября 2017 г. 13:25  

Добрый день, Сергей. 

А чем не подходит способ, непосредственно описанный в статье?

Т.е.

Или я что-то не до конца понял в вашем сценарии?

Сейчас обсуждают
Больше комментариев