BigCardText

Есть у нас определенное число, которое необходимо преобразовать в текст. Можно просто его написать. Но ведь лень:). В сети можно встретить много макросов, которые могут из числа делать текст. Давайте рассмотрим один из них и бесплатную программу на случай, если первый вариант не устраивает или не работает.

Вот код готового макроса (источник: wordexpert.ru):

Sub BigCardText()
'преобразование целого числа в текстовый эквивалент
'источник - http://wordtips.vitalnews.com/Pages/T000203_Converting_Numbers_to_Text.html
Dim sDigits As String
Dim sBigStuff As String
sDigits = ""
sBigStuff = ""
' Select the full number in which the insertion point is located
Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdMove
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
' Store the digits in a variable
sDigits = Trim(Selection.Text)
If Val(sDigits) > 999999 Then
    If Val(sDigits) <= 999999999 Then
        sBigStuff = CStr(Val(sDigits) \ 1000000)
        ' Create a field containing the big digits and
        ' the cardtext format flag
        Selection.Fields.Add Range:=Selection.Range, _
          Type:=wdFieldEmpty, Text:="= " + sBigStuff + " \* CardText", _
          PreserveFormatting:=True
        ' Select the field and copy it
        Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
        sBigStuff = Selection.Text & EndOfWord(Val(sBigStuff))
        sDigits = Right(sDigits, 6)
    End If
End If
If Val(sDigits) <= 999999 Then
    ' Create a field containing the digits and the cardtext format flag
    Selection.Fields.Add Range:=Selection.Range, _
      Type:=wdFieldEmpty, Text:="= " + sDigits + " \* CardText", _
      PreserveFormatting:=True
 
    ' Select the field and copy it
    Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
    sDigits = sBigStuff & Selection.Text
 
    ' Now put the words in the document
    Selection.TypeText Text:=sDigits
    Selection.TypeText Text:=" "
Else
    MsgBox "Число слишком большое для преобразования", vbOKOnly
End If
End Sub
'Вот эта функция. Берет аргумент в виде числа, чтобы
'быть более универсальной. Возвращает слово с нужным окончанием
Private Function EndOfWord(nmbr As Integer) As String
'число единиц находится в промежутке от 5 до 19
If (Val(Right(CStr(nmbr), 2)) = 5) _
    Or Val(Right(CStr(nmbr), 1)) = 0 _
    Or (Val(Right(CStr(nmbr), 1)) >= 5 And Val(Right(CStr(nmbr), 1)) <= 9) Then
    EndOfWord = " миллионов "
    'число единиц равно единице
ElseIf Val(Right(CStr(nmbr), 1)) = 1 Then
    EndOfWord = " миллион "
    'число единиц не больше четырех и больше единицы
    ElseIf Val(Right(CStr(nmbr), 1)) > 1 Then
        EndOfWord = " миллиона "
End If
End Function

Обратите внимание на то, что макрос работает с числами до 999999.

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

BigCardText

BigCardText

 Алгоритм установки и использования макроса:

1. Копируем код, который можно видеть выше.

2. Тогда идем по пути: «Вид → Макросы → Макросы».

BigCardText

BigCardText

3. Называем наш макрос (имя должно быть без пробелов) и нажимаем на кнопку «Создать».

BigCardText

4. В окне визуального редактора Microsoft Visual Basic, которое откроется, нужно найти текст с именем вашего макроса (у меня на примере BigCardText) и заменить его на скопированный выше.

BigCardText

BigCardText

Для запуска макроса на выполнение нужно выделить цифры. Тогда перейти в «Вид → Макросы → Макросы», найти BigCardText (если не переименовывали) и нажать на кнопку «Выполнить». После выполнения макрос должен дать результат.

BigCardText

Если вы хотите иметь быстрый доступ к нужному (нужным) макросу, то прочитайте следующую статью: Как добавить макрос в панель быстрого доступа?

Способ 2 (без макросов). Для этой функции воспользуемся услугами бесплатной утилиты (число прописью), которая может без проблем превращать цифры в текст, рассчитывать НДС и работать с программами Word и Excel.

BigCardText

Если ваш офисный пакет 2000 и выше, то программа может выполнять совместный с ним запуск.

BigCardText

Поддерживаются различные языки, в том числе украинский и русский. НДС и денежные единицы также настраиваются.

BigCardText

Работать с программой очень просто (на примере Microsoft Office Word 2016). Пишем в Ворде число, выделяем его (программа число прописью должна быть запущена) и нажимаем на иконку Word в окне программы. Цифры автоматически будут добавлены и преобразованы в текст. Можно просто скопировать цифры, вставить в программу (используя соответствующую кнопку) и повторить все в обратном порядке для вставки текста в редактор Microsoft Office Word.

BigCardText

Готовый текст можно просто перетащить в окно редактора.

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

Страница программы "Число прописью"

Скачать программу "Число прописью"