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
Формульный вариант. Естественно проверка БИК по базе не ведется, только на корректность которую можно проверить оффлайн. Формулы чувствительны к вставке или удалению строк или столбцов в зависимости от применения ROW или Column. (сейчас сделано через column и строки можно удалять и вставлять без опасения) . Можно очень серьезно оптимизировать и вынести в имена части расчетов, тем самым и эту зависимость снять, да и формулы укоротить, необходимость использования CHOOSE вызвана расчетом в том числе и на INN10. Под таблицей приведены формулы которые исп, для условного форматирования, они не нужны, приведены только для примера.
Kuzmich, При всем уважении , подсказка ну совсем не в ту степь. Да, можно проверить что только числа ….. но контрольные числа высчитываются и регулярки тут помогают слабо.