Validador Codigo LEI

Comparto un validador del Código LEI


¿Qué es el código LEI?

El Identificador de Entidad Jurídica (LEI, por sus siglas en inglés) es un código global y único basado en el estándar ISO 17442, que se utiliza para identificar a las personas jurídicas que son parte en las transacciones financieras y para cumplir con los requisitos de información exigidos en los mercados financieros.


Esta función sirve para el validar, es decir, devuelve verdadero o falso dependiendo de que el código sea correcto o no:

Public Function LEIValidacion(CodigoLEI) As Boolean
    ' Recibe el CodigoLEI
    
    Dim letras As String * 36
    Dim Dividendo As Integer
    Dim resto As Integer
    
    ' Calcula el valor de las letras de los 18 primeros caracteres
    letras = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    
    LEI = CStr(InStr(1, letras, Mid(CodigoLEI, 1, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 2, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 3, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 4, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 5, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 6, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 7, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 8, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 9, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 10, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 11, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 12, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 13, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 14, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 15, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 16, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 17, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 18, 1))) & "00"
    
        For Contador = 1 To Len(LEI)
         seDividendo = resto & Mid(LEI, Contador, 1)
        resto = Dividendo Mod 97
    Next Contador
    
    LEICalculado = Mid(CodigoLEI, 1, 18) & Format((98 - resto), "00")
    If CodigoLEI = LEICalculado Then
        LEIValidacion = True
    Else
        LEIValidacion = False
    End If
    
End Function


Esta función es para el cálculo de los dígitos de control:

Public Function LEICalculo(CodigoLEI As String) As String
    'Estructura del Codigo LEI
    'https://www.gleif.org/en/lei-focus/what-is-an-lei/lei-code-structure
    'http://www.csisc.cn/publicfiles/uploadfiles/doc/201303/%E6%9D%90%E6%96%993%EF%BC%9AISODIS%2017442.pdf
    ' Recibe el CodigoLEI
    
    Dim letras As String
    Dim LEI As String
    Dim Dividendo As Integer
    Dim resto As Integer
    
    ' Calcula el valor de las letras de los 18 primeros caracteres
    letras = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    
    LEI = CStr(InStr(1, letras, Mid(CodigoLEI, 1, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 2, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 3, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 4, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 5, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 6, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 7, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 8, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 9, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 10, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 11, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 12, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 13, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 14, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 15, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 16, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 17, 1))) & CStr(InStr(1, letras, Mid(CodigoLEI, 18, 1))) & "00"
    
        For Contador = 1 To Len(LEI)
        Dividendo = resto & Mid(LEI, Contador, 1)
        resto = Dividendo Mod 97
    Next Contador
    
    LEICalculo = Mid(CodigoLEI, 1, 18) & Format((98 - resto), "00")
End Function

Comentarios

Entradas populares de este blog

Convertir un número en letra en español en Excel

Renombrar Archivos o Carpetas