Преобразование цифр в текст в Microsoft Word
Чтобы написать цифры словами в Word, используйте поле с формулой {=число \* CardText}. Выделите число, нажмите Ctrl+F9, введите формулу внутри фигурных скобок и обновите результат клавишей F9. Этот метод работает без установки сторонних программ и подходит для договоров, счетов и официальных документов. Для автоматизации процесса или работы с очень большими числами применяются макросы VBA.
Оглавление
Быстрый способ: Поля и формулы
Встроенный инструмент «Поле» позволяет конвертировать целые числа в текстовый вид. Это наиболее надежный метод, не требующий программирования.
Алгоритм действий
- Напишите число, которое нужно перевести в пропись (например,
1250). - Выделите это число курсором.
- Нажмите комбинацию клавиш Ctrl + F9. Вокруг числа появятся фигурные скобки
{ }.- Важно: Фигурные скобки нельзя напечатать вручную с клавиатуры, они создаются только горячей клавишей.
- Внутри скобок, перед числом, допишите знак равенства и специальный ключ. Должно получиться так:
{ =1250 \* CardText }- Обратите внимание на пробелы: после
=пробел не обязателен, но перед\*он нужен. Обратный слэш\обязателен.
- Обратите внимание на пробелы: после
- Нажмите клавишу F9, чтобы обновить поле. Число заменится на текст: «одна тысяча двести пятьдесят».
Если вам нужно сохранить исходное число и добавить пропись рядом, скопируйте число, вставьте его в новое место и примените инструкцию выше к копии.
Ограничения метода
Стандартный ключ CardText корректно обрабатывает целые числа в диапазоне от 0 до 999 999. Для чисел больше миллиона потребуется комбинирование полей или использование макроса.
Настройка языка и формата
Результат преобразования зависит от языка, установленного для текущего фрагмента текста или всего документа.
| Ключ форматирования | Результат для числа 123 | Описание |
|---|---|---|
\* CardText | сто двадцать три | Стандартная пропись (зависит от языка интерфейса/текста) |
\* OrdText | сто двадцать третий | Порядковое числительное |
\* Caps | СТО ДВАДЦАТЬ ТРИ | Все буквы заглавные |
\* FirstCap | Сто двадцать три | Первая буква заглавная |
Как изменить язык вывода
Если вместо русских слов вы получаете английские («one hundred...»):
- Выделите поле с формулой (или весь текст).
- Перейдите на вкладку Рецензирование → Язык → Язык проверки правописания.
- Выберите Русский и нажмите ОК.
- Обновите поле, нажав F9.
Автоматизация через макросы VBA
Для регулярной работы с большими суммами (например, в бухгалтерских отчетах) удобнее использовать макрос. Он позволяет преобразовывать числа одним кликом.
Макрос для чисел до 999 миллионов
Этот код разбивает большое число на миллионы и тысячи, преобразует их по отдельности и добавляет правильные окончания («миллион», «миллиона», «миллионов»).
- Нажмите Alt + F11, чтобы открыть редактор VBA.
- В меню выберите Insert → Module.
- Вставьте следующий код:
Sub ConvertBigNumberToText()
Dim sNum As String
Dim lNum As Long
Dim sResult As String
' Получаем выделенное число
If Selection.Type <> wdSelectionNormal Then
MsgBox "Выделите число для преобразования", vbExclamation
Exit Sub
End If
sNum = Trim(Selection.Text)
' Проверка, является ли выделение числом
If Not IsNumeric(sNum) Then
MsgBox "Выделенный текст не является числом", vbExclamation
Exit Sub
End If
lNum = CLng(sNum)
If lNum > 999999999 Then
MsgBox "Число слишком велико (макс. 999 млн)", vbExclamation
Exit Sub
End If
' Логика разбиения на части
If lNum >= 1000000 Then
Dim lMillions As Long
Dim lRest As Long
lMillions = lNum \ 1000000
lRest = lNum Mod 1000000
' Формируем часть с миллионами
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
Text:="= " & lMillions & " \* CardText", PreserveFormatting:=True
Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
' Добавляем правильное окончание для слова "миллион"
Dim sMilEnd As String
Select Case lMillions Mod 100
Case 11 To 19: sMilEnd = " миллионов "
Case Else
Select Case lMillions Mod 10
Case 1: sMilEnd = " миллион "
Case 2 To 4: sMilEnd = " миллиона "
Case Else: sMilEnd = " миллионов "
End Select
End Select
sResult = Selection.Text & sMilEnd
' Если есть остаток, добавляем его
If lRest > 0 Then
' Вставляем поле для остатка
Selection.Collapse Direction:=wdCollapseEnd
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
Text:="= " & lRest & " \* CardText", PreserveFormatting:=True
sResult = sResult & Selection.Fields(1).Result.Text
End If
' Заменяем выделение итоговым текстом
Selection.Delete
Selection.TypeText Text:=sResult
Else
' Для чисел менее миллиона используем стандартное поле
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
Text:="= " & lNum & " \* CardText", PreserveFormatting:=True
Selection.Fields.Update
End If
End Sub
- Закройте редактор VBA.
- Чтобы запустить: выделите число в документе, нажмите Alt + F8, выберите
ConvertBigNumberToTextи нажмите Выполнить.
Макросы не работают в веб-версии Word (Word Online) и мобильных приложениях. Используйте десктопную версию программы.
Сравнение методов
| Характеристика | Поле { = \* CardText } | Макрос VBA |
|---|---|---|
| Сложность освоения | Низкая (3 действия) | Средняя (требуется вставка кода) |
| Диапазон чисел | До 999 999 (без доп. настроек) | До 999 999 999 и более |
| Скорость работы | Быстро для единичных случаев | Мгновенно для потока документов |
| Гибкость | Зависит от языка текста | Можно настроить под любой формат |
| Безопасность | Абсолютно безопасно | Требует разрешения на выполнение макросов |
Частые ошибки
-
Ошибка «!Неверный переключатель поля» или «#Error!»
- Причина: Опечатка в ключе
\* CardTextили отсутствие обратного слэша\. - Решение: Нажмите Shift + F9, чтобы увидеть код поля, проверьте синтаксис и нажмите F9 снова.
- Причина: Опечатка в ключе
-
Число не меняется при нажатии F9
- Причина: Поле заблокировано или обновление полей отключено в настройках.
- Решение: Выделите весь документ (Ctrl + A) и нажмите F9. Убедитесь, что курсор стоит внутри поля.
-
Текст на английском языке
- Причина: Язык фрагмента определен как английский.
- Решение: Измените язык проверки правописания для выделенного поля на русский (см. раздел «Настройка языка»).
-
Дробные числа не работают
- Причина: Ключ
CardTextработает только с целыми числами. - Решение: Отделите целую часть и дробную. Целую часть переведите в пропись, дробную запишите как «00 копеек» или аналогично, вручную.
- Причина: Ключ
FAQ
Можно ли сделать так, чтобы первая буква была заглавной, а остальные строчными?
Да, используйте комбинированный ключ: { =123 \* CardText \* FirstCap }. Результат: «Сто двадцать три».
Как превратить поле с формулой в обычный текст? Если нужно отправить документ клиенту, чтобы он не мог случайно изменить цифры, выделите поле и нажмите Ctrl + Shift + F9. Это разорвет связь с формулой, оставив только текстовый результат.
Работает ли этот способ в Word 2007, 2010, 2016, 2019, 2021 и 365?
Да, функция полей (Fields) является базовой и поддерживается во всех современных версиях Microsoft Word.