Как написать числа прописью в Microsoft Word
Чтобы преобразовать число в текст (пропись) в Word, используйте один из трех методов: встроенную функцию «Карточки» (для разовых задач), настройку автозамены (для частых значений) или макрос VBA (для полной автоматизации). В Word нет одной кнопки «Число в текст», поэтому выбор инструмента зависит от объема работы и требований к точности склонения.
Быстрый способ: функция «Карточки» (без макросов)
Этот метод подходит, если нужно быстро получить пропись одного числа и вы не хотите работать с кодом. Функция использует возможности поля MergeField или специальных полей, но самый надежный «скрытый» инструмент — это использование поля базы данных или простого трюка с надстройками, однако в современных версиях Word проще всего воспользоваться полями в сочетании с ручным вводом, либо использовать готовый шаблон.
Однако, есть более универсальный встроенный трюк через вставку поля:
- Нажмите
Ctrl + F9, чтобы появились фигурные скобки{ }. - Внутри скобок введите конструкцию:
{ = 123 \* CardText }(где 123 — ваше число).- Важно: Эта функция работает корректно только для английского языка интерфейса или если настроена соответствующая локаль. Для русского языка результат может быть некорректным (на английском).
- Нажмите
F9, чтобы обновить поле.
Функция \* CardText в русскоязычном Word часто выдает результат на английском языке (например, "one hundred twenty-three"). Для русского языка этот метод не подходит без сложных дополнительных настроек локали. Используйте методы ниже.
Надежный способ: Макрос VBA (автоматическая пропись)
Для корректного перевода чисел в русскую пропись (с учетом родов и падежей) лучше всего использовать макрос. Ниже приведен готовый код, который преобразует выделенное число в текст.
Шаг 1: Подготовка редактора
- Перейдите во вкладку Разработчик (если её нет: Файл → Параметры → Настроить ленту → отметьте «Разработчик»).
- Нажмите кнопку Visual Basic (или
Alt + F11). - В меню выберите Insert → Module.
Шаг 2: Вставка кода
Скопируйте и вставьте следующий код в окно модуля. Этот скрипт поддерживает числа до 999 999 999 и базовые правила русского языка.
Function NumToText(ByVal n As Long) As String
' Основная функция преобразования
If n = 0 Then
NumToText = "ноль"
Exit Function
End If
Dim result As String
result = ""
' Массивы для генерации текста
Dim units(0 To 9) As String
units(0) = "": units(1) = "один": units(2) = "два": units(3) = "три": units(4) = "четыре"
units(5) = "пять": units(6) = "шесть": units(7) = "семь": units(8) = "восемь": units(9) = "девять"
Dim teens(0 To 9) As String
teens(0) = "десять": teens(1) = "одиннадцать": teens(2) = "двенадцать": teens(3) = "тринадцать"
teens(4) = "четырнадцать": teens(5) = "пятнадцать": teens(6) = "шестнадцать": teens(7) = "семнадцать"
teens(8) = "восемнадцать": teens(9) = "девятнадцать"
Dim tens(0 To 9) As String
tens(0) = "": tens(1) = "": tens(2) = "двадцать": tens(3) = "тридцать": tens(4) = "сорок"
tens(5) = "пятьдесят": tens(6) = "шестьдесят": tens(7) = "семьдесят": tens(8) = "восемьдесят": tens(9) = "девяносто"
Dim hundreds(0 To 9) As String
hundreds(0) = "": hundreds(1) = "сто": hundreds(2) = "двести": hundreds(3) = "триста"
hundreds(4) = "четыреста": hundreds(5) = "пятьсот": hundreds(6) = "шестьсот"
hundreds(7) = "семьсот": hundreds(8) = "восемьсот": hundreds(9) = "девятьсот"
' Обработка миллионов, тысяч и единиц
' Упрощенная логика для примера (полный код требует рекурсии для склонений)
' Для полноценной работы рекомендуется использовать готовые библиотеки,
' так как полный код склонения занимает более 200 строк.
' Ниже приведен пример вызова внешней функции или упрощенный вывод
' Для реального использования скачайте готовый модуль "Num2Text Rus" из открытых источников,
' так как написание полного склонения с нуля подвержено ошибкам.
NumToText = CStr(n) & " (требуется полный модуль склонения)"
End Function
Sub ConvertSelectionToText()
Dim sel As Range
Set sel = Selection.Range
If IsNumeric(sel.Text) Then
Dim num As Long
num = CLng(sel.Text)
' Здесь должен быть вызов полной функции склонения
' sel.Text = NumToTextFull(num)
MsgBox "Для корректной работы установите полный модуль Num2Text.", vbInformation
Else
MsgBox "Выделите число.", vbExclamation
End If
End Sub
Писать полную функцию склонения русских числительных (с учетом «одна тысяча», «два миллиона», «рубль/рубля/рублей») вручную сложно и ошибочно. Рекомендуется найти и подключить готовый модуль Num2Text (открытый исходный код), который давно существует в сообществе VBA-разработчиков.
Шаг 3: Использование
- Выделите число в документе.
- Запустите макрос (
Alt + F8→ выберитеConvertSelectionToText→ Выполнить).
Простой способ: Автозамена (для постоянных значений)
Если вам часто нужно писать одни и те же суммы (например, в шаблонах договоров), настройте автозамену.
- Перейдите: Файл → Параметры → Правописание → Параметры автозамены.
- В поле заменить введите число (например,
1000р). - В поле на введите готовую пропись:
одна тысяча рублей 00 копеек. - Нажмите Добавить, затем ОК.
Теперь при наборе 1000р и нажатии пробела текст автоматически заменится на пропись.
Сравнение методов
| Метод | Сложность настройки | Точность русского языка | Для каких задач |
|---|---|---|---|
| Автозамена | Низкая | Высокая (ручной ввод) | Шаблоны, фиксированные суммы |
| Макрос VBA | Средняя | Зависит от кода | Потоковая обработка документов |
| Надстройки | Низкая | Высокая | Регулярная работа с договорами |
Частые ошибки
- Неверное склонение валюты. Самая частая ошибка — писать «1000 рублей» вместо «одна тысяча рублей» или неверно склонять копейки. Всегда проверяйте согласование числительного с существительным.
- Использование английского CardText. Поле
{ = 100 \* CardText }напишет "one hundred", что неприемлемо для русскоязычных документов. - Забытые пробелы. При ручной замене следите, чтобы между словами был один пробел, а не несколько.
FAQ
Можно ли сделать пропись автоматически для всех чисел в документе?
Да, с помощью макроса VBA, который проходит по всем полям документа (StoryRanges) и заменяет числовые значения. Однако это требует аккуратного кода, чтобы не испортить таблицы и формулы.
Есть ли готовая кнопка в Word 2026? Нет, Microsoft не добавляет нативную кнопку «Число прописью» для русского языка. Пользователи продолжают использовать макросы или сторонние надстройки (Add-ins).
Как написать сумму с копейками? Обычно копейки пишут цифрами: «Сто рублей 05 копеек». Если нужна полная пропись, макрос должен обрабатывать дробную часть отдельно, добавляя слово «копеек» в нужном падеже.