FUN?ÃO PARA VERIFICAR CNPJ E CPF
Oi pessoal,
Alguém ai tem uma função para verificar CNPJ e CPF que funcione, pois achei na rede várias funções mas nenhum funciona perfeitamente.
Obrigado,
Alguém ai tem uma função para verificar CNPJ e CPF que funcione, pois achei na rede várias funções mas nenhum funciona perfeitamente.
Obrigado,
Bom dia amigo.
eu uso essas duas em VB6, nunca deu problema em nenhum cliente.
eu uso essas duas em VB6, nunca deu problema em nenhum cliente.
Public Function Calc_CNPJ(valor As String) As Boolean
Dim Mult1 As String
Dim Mult2 As String
Dim dig1 As Integer
Dim dig2 As Integer
Dim X As Integer
Mult1 = [Ô]543298765432[Ô]
Mult2 = [Ô]6543298765432[Ô]
For X = 1 To 12
dig1 = dig1 + (Val(Mid$(valor, X, 1)) * Val(Mid$(Mult1, X, 1)))
Next
For X = 1 To 13
dig2 = dig2 + (Val(Mid$(valor, X, 1)) * Val(Mid$(Mult2, X, 1)))
Next
dig1 = (dig1 * 10) Mod 11
dig2 = (dig2 * 10) Mod 11
If dig1 = 10 Then dig1 = 0
If dig2 = 10 Then dig2 = 0
Calc_CNPJ = True
If dig1 <> Val(Mid$(valor, 13, 1)) Then Calc_CNPJ = False
If dig2 <> Val(Mid$(valor, 14, 1)) Then Calc_CNPJ = False
End Function
Public Function Calc_CPF(valor As String) As Boolean
[ô]Inicializa variaveis
Dim dig1 As Integer
Dim dig2 As Integer
Dim Mult1 As Integer
Dim Mult2 As Integer
Dim X As Integer
Mult1 = 10
Mult2 = 11
For X = 1 To 9
dig1 = dig1 + (Val(Mid$(valor, X, 1)) * Mult1)
Mult1 = Mult1 - 1
Next
For X = 1 To 10
dig2 = dig2 + (Val(Mid$(valor, X, 1)) * Mult2)
Mult2 = Mult2 - 1
Next
dig1 = (dig1 * 10) Mod 11
dig2 = (dig2 * 10) Mod 11
If dig1 = 10 Then dig1 = 0
If dig2 = 10 Then dig2 = 0
Calc_CPF = True
If Val(Mid$(valor, 10, 1)) <> dig1 Then Calc_CPF = False
If Val(Mid$(valor, 11, 1)) <> dig2 Then Calc_CPF = False
End Function
FBGSYSTEMS - obrigado por ter respondido, agora como vc utiliza esta função no seu sistema?
Obrigado
Obrigado
ELMO01 esse funcao dele somente valida o CPF voce precisa que busque as informações no site da Receita federal?
KURTGU - não há necessidade de verificar na Receita Federal, quero somente que verifique o CNPJ e o CPF se são válidos.
Obrigado
Obrigado
Entendi...
Ja tentou ultilizar esta do marcorreti?
http://www.macoratti.net/vbn_vdoc.htm
Ja tentou ultilizar esta do marcorreti?
http://www.macoratti.net/vbn_vdoc.htm
Sim, mas não gostei muito dela, por isto que estou procurando outra função.
If calc_cnpj(xxxx) = true then
Valido
Else
Invaludo
Valido
Else
Invaludo
Eu uso essas:
Function ValidaçãoCNPJ(ByVal sCNPJ As String) As Boolean
[ô]Felipe Costa Gualberto - http://www.ambienteoffice.com.br
Dim sVerificador1 As String
Dim sVerificador2 As String
Dim l As Long
Dim lOffset As Long
Dim lTotal As Long
Dim lResto As Long
[ô]Limpa barras, traços e pontos do CNPJ, caso haja:
sCNPJ = Replace(sCNPJ, [Ô].[Ô], vbNullString)
sCNPJ = Replace(sCNPJ, [Ô]-[Ô], vbNullString)
sCNPJ = Replace(sCNPJ, [Ô]/[Ô], vbNullString)
sCNPJ = Replace(sCNPJ, [Ô] [Ô], vbNullString)
[ô]Verifica se o CNPJ possui 11 caracteres
If Not Len(sCNPJ) = 14 Or Not IsNumeric(sCNPJ) Then Exit Function
[ô]Obtém os dÃgitos verificadores do CNPJ
sVerificador1 = Mid(sCNPJ, 13, 2)
sCNPJ = Left(sCNPJ, 12)
[ô]Calcula os dÃgitos verificadores de acordo
[ô]com as regras do Ministério da Fazenda:
[ô]--- InÃcio ---
[ô]O código do laço executará duas vezes
Do Until Len(sCNPJ) = 14
[ô]Rotina para efetuar o cálculo da soma de produtos
lOffset = 2
lTotal = 0
For l = Len(sCNPJ) To 1 Step -1
If lOffset > 9 Then lOffset = 2
lTotal = lTotal + ((Mid(sCNPJ, l, 1)) * lOffset)
lOffset = lOffset + 1
Next l
[ô]Cálculo para obter dÃgito verificador
l = lTotal Mod 11
l = 11 - l
If l = 10 Or l = 11 Then l = 0
[ô]Concatena o dÃgito l ao CNPJ
sCNPJ = sCNPJ & CStr(l)
Loop
[ô]Retorna os dÃgitos verificadores
sVerificador2 = Right(sCNPJ, 2)
[ô]Se comparação entre dÃgitos verificadores for Verdadeiro,
[ô]então o número do CNPJ é válido:
ValidaçãoCNPJ = (sVerificador1 = sVerificador2)
End Function
Function ValidaçãoCPF(ByVal sCPF As String) As Boolean
[ô]Felipe Costa Gualberto - http://www.ambienteoffice.com.br
Dim sVerificador1 As String
Dim sVerificador2 As String
Dim l As Long
Dim lOffset As Long
Dim lTotal As Long
[ô]Limpa traços e pontos do CPF, caso haja:
sCPF = Replace(sCPF, [Ô].[Ô], vbNullString)
sCPF = Replace(sCPF, [Ô]-[Ô], vbNullString)
sCPF = Replace(sCPF, [Ô] [Ô], vbNullString)
[ô]Verifica se o CPF possui 11 caracteres
If Not Len(sCPF) = 11 Or Not IsNumeric(sCPF) Then Exit Function
[ô]Obtém os dÃgitos verificadores do CPF
sVerificador1 = Right(sCPF, 2)
sCPF = Left(sCPF, 9)
[ô]Calcula os dÃgitos verificadores de acordo
[ô]com as regras do Ministério da Fazenda:
[ô]--- InÃcio ---
[ô]O código do laço executará duas vezes
Do Until Len(sCPF) = 11
[ô]Rotina para efetuar o cálculo da soma de produtos
lOffset = 2
lTotal = 0
For l = Len(sCPF) To 1 Step -1
lTotal = lTotal + (Mid(sCPF, l, 1) * lOffset)
lOffset = lOffset + 1
Next l
[ô]Cálculo para obter dÃgito verificador
l = lTotal Mod 11
l = 11 - l
If l = 10 Or l = 11 Then l = 0
[ô]Concatena o dÃgito l ao CPF
sCPF = sCPF & CStr(l)
Loop
[ô]Os dÃgitos verifadores são os dois últimos algarismos
sVerificador2 = Right(sCPF, 2)
[ô]--- Fim ---
[ô]Se comparação entre dÃgitos verificadores for Verdadeiro,
[ô]então o número do CPF é válido:
ValidaçãoCPF = (sVerificador1 = sVerificador2)
End Function
Private Sub TxtCPF_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If ValidaçãoCNPJ(TxtCPF) Or ValidaçãoCPF(TxtCPF) Then
Call Magica(TxtCPF)
Else
MsgBox [Ô]CPF ou CPNJ Inválido[Ô], vbCritical + vbOKOnly, [Ô]Errou[Ô]
End If
End Sub
Private Function Magica(ByRef tCPF As MSForms.TextBox) As String
Dim CPF, cnpj As String
CPF = 11
cnpj = 14
If Len(tCPF) = CPF And IsNumeric(tCPF) Then
tCPF = Format(tCPF.Text, [Ô]@@@.@@@.@@@-@@[Ô])
CPF = CPF + 3
ElseIf Len(tCPF.Text) = cnpj And IsNumeric(tCPF.Text) Then
tCPF.MaxLength = 18
tCPF = Format(tCPF.Text, [Ô]@@.@@@.@@@/@@@@-@@[Ô])
cnpj = cnpj + 4
End If
End Function
Bom, esta adaptada para VBA e funciona muito bem para os meus propositos. Tente ai.
Function ValidaçãoCNPJ(ByVal sCNPJ As String) As Boolean
[ô]Felipe Costa Gualberto - http://www.ambienteoffice.com.br
Dim sVerificador1 As String
Dim sVerificador2 As String
Dim l As Long
Dim lOffset As Long
Dim lTotal As Long
Dim lResto As Long
[ô]Limpa barras, traços e pontos do CNPJ, caso haja:
sCNPJ = Replace(sCNPJ, [Ô].[Ô], vbNullString)
sCNPJ = Replace(sCNPJ, [Ô]-[Ô], vbNullString)
sCNPJ = Replace(sCNPJ, [Ô]/[Ô], vbNullString)
sCNPJ = Replace(sCNPJ, [Ô] [Ô], vbNullString)
[ô]Verifica se o CNPJ possui 11 caracteres
If Not Len(sCNPJ) = 14 Or Not IsNumeric(sCNPJ) Then Exit Function
[ô]Obtém os dÃgitos verificadores do CNPJ
sVerificador1 = Mid(sCNPJ, 13, 2)
sCNPJ = Left(sCNPJ, 12)
[ô]Calcula os dÃgitos verificadores de acordo
[ô]com as regras do Ministério da Fazenda:
[ô]--- InÃcio ---
[ô]O código do laço executará duas vezes
Do Until Len(sCNPJ) = 14
[ô]Rotina para efetuar o cálculo da soma de produtos
lOffset = 2
lTotal = 0
For l = Len(sCNPJ) To 1 Step -1
If lOffset > 9 Then lOffset = 2
lTotal = lTotal + ((Mid(sCNPJ, l, 1)) * lOffset)
lOffset = lOffset + 1
Next l
[ô]Cálculo para obter dÃgito verificador
l = lTotal Mod 11
l = 11 - l
If l = 10 Or l = 11 Then l = 0
[ô]Concatena o dÃgito l ao CNPJ
sCNPJ = sCNPJ & CStr(l)
Loop
[ô]Retorna os dÃgitos verificadores
sVerificador2 = Right(sCNPJ, 2)
[ô]Se comparação entre dÃgitos verificadores for Verdadeiro,
[ô]então o número do CNPJ é válido:
ValidaçãoCNPJ = (sVerificador1 = sVerificador2)
End Function
Function ValidaçãoCPF(ByVal sCPF As String) As Boolean
[ô]Felipe Costa Gualberto - http://www.ambienteoffice.com.br
Dim sVerificador1 As String
Dim sVerificador2 As String
Dim l As Long
Dim lOffset As Long
Dim lTotal As Long
[ô]Limpa traços e pontos do CPF, caso haja:
sCPF = Replace(sCPF, [Ô].[Ô], vbNullString)
sCPF = Replace(sCPF, [Ô]-[Ô], vbNullString)
sCPF = Replace(sCPF, [Ô] [Ô], vbNullString)
[ô]Verifica se o CPF possui 11 caracteres
If Not Len(sCPF) = 11 Or Not IsNumeric(sCPF) Then Exit Function
[ô]Obtém os dÃgitos verificadores do CPF
sVerificador1 = Right(sCPF, 2)
sCPF = Left(sCPF, 9)
[ô]Calcula os dÃgitos verificadores de acordo
[ô]com as regras do Ministério da Fazenda:
[ô]--- InÃcio ---
[ô]O código do laço executará duas vezes
Do Until Len(sCPF) = 11
[ô]Rotina para efetuar o cálculo da soma de produtos
lOffset = 2
lTotal = 0
For l = Len(sCPF) To 1 Step -1
lTotal = lTotal + (Mid(sCPF, l, 1) * lOffset)
lOffset = lOffset + 1
Next l
[ô]Cálculo para obter dÃgito verificador
l = lTotal Mod 11
l = 11 - l
If l = 10 Or l = 11 Then l = 0
[ô]Concatena o dÃgito l ao CPF
sCPF = sCPF & CStr(l)
Loop
[ô]Os dÃgitos verifadores são os dois últimos algarismos
sVerificador2 = Right(sCPF, 2)
[ô]--- Fim ---
[ô]Se comparação entre dÃgitos verificadores for Verdadeiro,
[ô]então o número do CPF é válido:
ValidaçãoCPF = (sVerificador1 = sVerificador2)
End Function
Private Sub TxtCPF_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If ValidaçãoCNPJ(TxtCPF) Or ValidaçãoCPF(TxtCPF) Then
Call Magica(TxtCPF)
Else
MsgBox [Ô]CPF ou CPNJ Inválido[Ô], vbCritical + vbOKOnly, [Ô]Errou[Ô]
End If
End Sub
Private Function Magica(ByRef tCPF As MSForms.TextBox) As String
Dim CPF, cnpj As String
CPF = 11
cnpj = 14
If Len(tCPF) = CPF And IsNumeric(tCPF) Then
tCPF = Format(tCPF.Text, [Ô]@@@.@@@.@@@-@@[Ô])
CPF = CPF + 3
ElseIf Len(tCPF.Text) = cnpj And IsNumeric(tCPF.Text) Then
tCPF.MaxLength = 18
tCPF = Format(tCPF.Text, [Ô]@@.@@@.@@@/@@@@-@@[Ô])
cnpj = cnpj + 4
End If
End Function
Bom, esta adaptada para VBA e funciona muito bem para os meus propositos. Tente ai.
Pessoal, consegui fazer pela função do FBGSYSTEMS e deu certo, era o que eu necessitava. Agradeço a todos que se dispuseram a me ajudar.
Obrigado
Obrigado
Tópico encerrado , respostas não são mais permitidas