Формы в Word (вопросы и ответы). Часть 3. Перевод чисел в словарную форму

Сегодня мы можем вернуться к разбору вопросов, связанных с созданием электронных форм в Word.

Сегодняшний вопрос задал Firas Hamza:

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

Конкретно использовавшиеся нами раньше Content Controls таким функционалом не обладают, но есть другой – старый и отчасти забытый механизм полей и формул в Word, которым мы и воспользуемся.

Итак, пусть у нас есть простой фрагмент документа:

image

В строке Number мы будем вводить число (для этого мы добавили туда простое поле ввода), а в строке Words будем получать его словесное представление. Итак, что нужно сделать:

  • Создаем bookmark (закладку), которая будет “накрывать” наше поле ввода (эта загладка нужна нам чтобы в формуле ссылаться на вводимое число).

Для этого выделяем наше поле ввода (не текст в поле, а само поле – можно с небольшим запасом, не старшно) и на вкладке Insert нажимаем Bookmark

image

вводим имя закладки (например, Summ) и нажимаем Add

image

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

Для этого встаем в строку Words и нажимаем Ctrl+F9

image

внутри фигурных скобок пишем:

REF Summ \*cardtext

image

  • Щелкаем на введенную нами формулу и в контекстном меню нажимаем Update Field
  • Выделяем только что вставленное поле (опять можно с некоторым запасом – по пробелу с каждой стороны), нажимаем в строке (внизу окна программы) статуса выбор языка

image

и в окне языка выбираем русский язык:

image

 

Собственно всё готово. Если теперь мы в нашем поле ввода введем число, а затем выделим весь текст документа (Ctrl+A) и нажмем F9, то получим примерно такой результат (это вызывает обновление/пересчет всех полей в документе):

image

Ура!!!

Теперь об ограничениях этого подхода:

  • он работает только с числами до 999999 (т.е. меньше миллиона)
  • не очень надежен по части языка (у меня он всё время переключается и начинает писать по английски – даже несмотря на явное задание языка для ввода и вывода). Скорее всего будут проблемы с разными национальными версиями офиса.
  • требует нажимать “Обновить поля” (это мы делали: Ctrl+A и F9) или переоткрывать документ
  • не умеет склонять слова (теже “рубля”/“рубль”).

P.S. По этой ссылке можно скачать документ с примером и поиграться

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

8 Responses to Формы в Word (вопросы и ответы). Часть 3. Перевод чисел в словарную форму

  1. fixic says:

    В понедельник попробую 🙂 Спасибо Спасибо!

  2. fixic says:

    Появилась свободная минутка, и попробовал. Все работает, ура)))
    А теперь что касается второй части вопроса, можно научить его вычитать разницу между двумя датами и результат умножать на вот это “Summ” и тоже выводить в отдельном поле? 🙂

    Кст, Михаил, как мне тебя отблагодарить? Если бываешь в районе Новокузнецкой, заходи на кофе 🙂

    • Все работает, ура)))

      Отлично, только помни про ограничения.

      Если бываешь в районе Новокузнецкой, заходи на кофе

      Увы, разве что раз в два года: Ижевск всё же в 1200 км. 🙂

  3. fixic says:

    Прошу прощения, увидел сообщение про даты 🙂 Ну ладно, руками тогда буду дни считать 🙂

    • Я бы всё же подумал по поводу добавить немного кода на VBA.
      Если этот документ чисто для внутреннего использования и необходимость написать небольшой макрос не пугает, я могу сделать такой пример.

      • fixic says:

        Да честно говоря тут уже не так все критично))) Т.е. сумму то я обычно знаю, просто думал съэкономить еще одну секунду, но таких документов делать приходится всего 2-3 раза в день, поэтому не страшно 🙂

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