Esta função é muito útil para a validação do CNPJ passado por parâmetro.
A função também verifica se o CNPJ está no formato correto utilizando Expressão Regular.
Na função o CNPJ pode ser digitado em 2 formatos diferentes:
XX.XXX.XXX/XXXX-XX OU XXXXXXXXXXXXXX.
<% '----------------------------------------------------- 'Funcao: IsCNPJ(ByVal intNumero) 'Sinopse: Verifica se o valor passado é um CNPJ válido ' Formatos aceitos: XX.XXX.XXX/XXXX-XX ou ' XXXXXXXXXXXXXX 'Parametro: intNumero 'Retorno: Booleano 'Autor: Gabriel Fróes - www.codigofonte.com.br '----------------------------------------------------- Function IsCNPJ(ByVal intNumero) 'Validando o formato do CNPJ com expressão regular Set regEx = New RegExp 'Cria o Objeto Expressão regEx.Pattern = "d{2}.?d{3}.?d{3}/?d{4}-?d{2}" ' Expressão Regular regEx.IgnoreCase = True ' Sensitivo ou não regEx.Global = True Retorno = RegEx.Test(intNumero) Set regEx = Nothing 'Caso seja verdadeiro posso validar se o CNPJ é válido If Retorno = True Then 'Validando a sequencia números Dim CNPJ_temp CNPJ_temp = intNumero CNPJ_temp = Replace(CNPJ_temp, ".", "") CNPJ_temp = Replace(CNPJ_temp, "/", "") CNPJ_temp = Replace(CNPJ_temp, "-", "") CNPJ_Digito_temp = Right(CNPJ_temp, 2) 'Somando os 12 primeiros digitos do CNPJ Soma = (Clng(Mid(CNPJ_temp,1,1)) * 5) + (Clng(Mid(CNPJ_temp,2,1)) * 4) + (Clng(Mid(CNPJ_temp,3,1)) * 3) + (Clng(Mid(CNPJ_temp,4,1)) * 2) + (Clng(Mid(CNPJ_temp,5,1)) * 9) + (Clng(Mid(CNPJ_temp,6,1)) * 8)+ (Clng(Mid(CNPJ_temp,7,1)) * 7) + (Clng(Mid(CNPJ_temp,8,1)) * 6) + (Clng(Mid(CNPJ_temp,9,1)) * 5) + (Clng(Mid(CNPJ_temp,10,1)) * 4) + (Clng(Mid(CNPJ_temp,11,1)) * 3) + (Clng(Mid(CNPJ_temp,12,1)) * 2) '---------------------------------- 'Calculando o 1º dígito verificador '---------------------------------- 'Pegando o resto da divisão por 11 Resto = (Soma Mod 11) If Resto < 2 Then DigitoHum = 0 Else DigitoHum = Cstr(11-Resto) End If '---------------------------------- '---------------------------------- 'Calculando o 2º dígito verificador '---------------------------------- 'Somando os 12 primeiros digitos do CNPJ mais o 1º dígito Soma = (Clng(Mid(CNPJ_temp,1,1)) * 6) + (Clng(Mid(CNPJ_temp,2,1)) * 5) + (Clng(Mid(CNPJ_temp,3,1)) * 4) + (Clng(Mid(CNPJ_temp,4,1)) * 3) + (Clng(Mid(CNPJ_temp,5,1)) * 2) + (Clng(Mid(CNPJ_temp,6,1)) * 9) + (Clng(Mid(CNPJ_temp,7,1)) * 8) + (Clng(Mid(CNPJ_temp,8,1)) * 7) + (Clng(Mid(CNPJ_temp,9,1)) * 6) + (Clng(Mid(CNPJ_temp,10,1)) * 5) + (Clng(Mid(CNPJ_temp,11,1)) * 4) + (Clng(Mid(CNPJ_temp,12,1)) * 3) + (DigitoHum * 2) 'Pegando o resto da divisão por 11 Resto = (Soma Mod 11) If Resto < 2 Then DigitoDois = 0 Else DigitoDois = Cstr(11-Resto) End If '---------------------------------- 'Verificando se os digitos são iguais aos digítados. DigitoCNPJ = Cstr(DigitoHum) & Cstr(DigitoDois) If Cstr(CNPJ_Digito_temp) = Cstr(DigitoCNPJ) Then Retorno = True Else Retorno = False End If End If IsCNPJ = Retorno End Function %>