1 1 1 1 1 1 1 1 1 1 Рейтинг 5.00 (1 голос)

Сумма прописью с НДС в Microsoft Word

Наш сегодняшний материал посвящается всем сотрудникам плановых  и договорных отделов :)

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

И было бы замечательно , если бы она автоматически считала НДС и вписывала это значение тоже прописью.

На данный момент самый простой способ, это открыть любой онлайн сервис (типа сумма-прописью или наш ресурс выделение НДС) вписать туда сумму, скопировать оттуда результат и вставить его Word.

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

Мы будем использовать уже написанный скрипт Дата (день, месяц, год) прописью, который модернизирован для вывода денежных единиц, а также использовать материал, который позволял нам обмениваться данными из Active Directory и Excel Карточка сотрудника Active Directory через Excel

Итак что же нам необходимо сделать?

1. Открываем Word. Идем во вкладку Вид- Макросы

Даже если у нас нет ни одного макроса  нажимаем кнопку - Изменить

 

 

Открывается редактор VBA

создаем макрос

Sub Макрос1()
 
    Selection.MoveStartUntil Cset:=" ", Count:=wdBackward
    Selection.MoveEndUntil Cset:=" ", Count:=wdForward
    body = Selection
Set oHttp = CreateObject("MSXML2.ServerXMLHTTP")
sURL = "http://jabber.pozitiv-r.ru/scripts/reqexcel.php"
oHttp.Open "POST", sURL, False
oHttp.setrequestheader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
oHttp.setrequestheader "Content-Type", "application/x-www-form-urlencoded"
oHttp.send ("from=www&key=towo&body=" + Format(body, "###0.00") + "!3")
Result = oHttp.ResponseText
Dim jsonlib                         As New jsonlib 'class name you give it
Set oContracts = jsonlib.parse(CStr(Result))
ff = oContracts("result")
oHttp.Open "POST", sURL, False
oHttp.setrequestheader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
oHttp.setrequestheader "Content-Type", "application/x-www-form-urlencoded"
nds = Val(body) * 18 / 118
oHttp.send ("from=www&key=towo&body=" + (Format(nds, "###0.00")) + "!3")
Result = oHttp.ResponseText
Set oContracts = jsonlib.parse(CStr(Result))
ff1 = oContracts("result")
Selection.Collapse Direction:=wdCollapseEnd
Selection.TypeText Text:=" руб. (" + ff + ") в том числе НДС(18%)  " + Format(nds, "###0.00") + " руб. (" + ff1 + ")"
End Sub

 

Присоединяем библиотеку jsonlib у вас после всех движений в левой верхней части должно быть подобие вот этой картинки

Что означает подчеркнутое слово Normal? Это говорит нам о том что и класс и макрос записаны в стандартном шаблоне Word Normal.dot(m). То есть при открытии любого файла а также содания нового на этом рабочем месте этот класс и макрос будут загружены автоматически.

Теперь нам надо присвоить какое нибудь сочетание клавиш что бы этот макрос запустить.

Для этого в Word. (показано действие для 2010 офиса)

Файл-Параметры-Настройка ленты -(внизу) Сочетания клавиш- Настройка 

Выбираем категорию макросы. В правом поле выбираем наш макрос,

Новое сочетание клавиш - F9. Назначить

Почему F9? Вы сами можете переназанчить горячую клавишу по вызову макроса.

Все , у нас готовый шаблон которым мы можем пользоватся

Пишем Сумма договора составляет 23456.94 

мы или сразу нажимаем F9 после набора суммы, или просто курсором отмечаем число которое надо преобразовать  и нажимаем F9, это не важно.

результат будет такой

Сумма договора составляет 23456.94 руб. (двадцать три тысячи четыреста пятьдесят шесть рублей девяносто четыре копейки ) в том числе НДС(18%)  3578.18 руб. (три тысячи пятьсот семьдесят восемь рублей восемнадцать копеек )

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

А как считать если у нас НДС не 18% а 10%?

Исправьте только две строки 

nds = Val(body) * 18 / 118

замените на nds = Val(body) * 10 / 110

и

Selection.TypeText Text:=" руб. (" + ff + ") в том числе НДС(18%)  " + Format(nds, "###0.00") + " руб. (" + ff1 + ")"

на Selection.TypeText Text:=" руб. (" + ff + ") в том числе НДС(10%)  " + Format(nds, "###0.00") + " руб. (" + ff1 + ")"

Как можете заметить Selection.TypeText Text - отвечает за вывод текста и что вы уж там напишите, ограничена лишь вашей фантазией.

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

Удачных расчетов!