Страницы: 1
RSS
Валидация ИНН, БИК, и Р\С
 
Добрый день помогите пожалуйста написать макрос для проверки ИНН, БИК, Р\С

Литература по теме
http://www.kholenkov.ru/data-validation/rs/  - Валидация и проверка контрольного числа расчетного счета
https://www.egrul.ru/test_inn.html  - Алгоритм проверки ИНН 10 знаков
Таблица выглядит так, если ошибка в ИНН, БИК, р\с то ячейка должна загореться цветом!

Заранее благодарю тех кто сможет откликнуться, дать подсказку, или возможно у кого уже есть готовое решение!!
 
Цитата
дать подсказку
https://www.planetaexcel.ru/techniques/7/4844/
 
Код
Option Explicit

Function checkINN(what)
    Dim doc As MSHTML.HTMLDocument
    With New MSXML2.XMLHTTP60
        .Open "POST", "https://www.egrul.ru/test_inn.html", False
        .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36"
        .send "inn=" & what & "&go=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%82%D1%8C&action=check"
        Set doc = New MSHTML.HTMLDocument
        doc.body.innerHTML = .responseText
        checkINN = doc.getElementsByClassName("message")(0).getElementsByTagName("b")(0).innerText
    End With
End Function
Sub main()
    Dim r
    r = "123456"
    Debug.Print insertText("ИНН №{1} {2}", r, checkINN(r))
    r = "3664069397"
    Debug.Print insertText("ИНН №{1} {2}", r, checkINN(r))
End Sub

Function insertText(ParamArray arr())
    Dim i&
    Dim inp
    inp = arr(LBound(arr))
    If LBound(arr) = UBound(arr) Then insertText = inp: Exit Function
    For i = LBound(arr) + 1 To UBound(arr)
        inp = Replace(inp, "{" & i & "}", arr(i))
    Next
    insertText = inp
End Function
Изменено: Все_просто - 15.06.2018 12:31:32
С уважением,
Федор/Все_просто
 
Подключил
http://prntscr.com/jv96l9
заработало.
 
Формульный вариант. Естественно проверка БИК по базе не ведется, только на корректность которую можно проверить оффлайн.
Формулы чувствительны к вставке или удалению строк или столбцов в зависимости от применения ROW или Column. (сейчас сделано через column и строки можно удалять и вставлять без опасения) . Можно очень серьезно оптимизировать и  вынести в имена части расчетов, тем самым и эту зависимость снять, да и формулы укоротить, необходимость использования CHOOSE вызвана расчетом в том числе и на INN10.
Под таблицей приведены формулы которые исп, для условного форматирования, они не нужны, приведены только для примера.


Kuzmich, При всем уважении , подсказка ну совсем не в ту степь. Да, можно проверить что только числа  ….. но контрольные числа высчитываются  и регулярки тут помогают слабо.
Изменено: БМВ - 15.06.2018 13:52:43
По вопросам из тем форума, личку не читаю.
 
Hugo, спасибо за напоминание о необходимости подключения библиотек.
Наверное, стоило через позднее связывание предоставить код.
С уважением,
Федор/Все_просто
Страницы: 1
Наверх