Imprimir página | Cerrar ventana

Utilidades: Función cambio CCC bancario por IBAN

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Tus Funciones Favoritas & Aportaciones & Artí­culos
Descripción del foro: Para publicar código interesante, aportaciones y artículos
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=77818
Fecha de impresión: 17/Febrero/2020 a las 04:19


Tema: Utilidades: Función cambio CCC bancario por IBAN
Publicado por: Pablillo I
Asunto: Utilidades: Función cambio CCC bancario por IBAN
Fecha de publicación: 24/Octubre/2013 a las 18:59
Hola os dejo una pequeña función que cambia el típico CCC bancario por el IBAN. A partir de ahora y en los meses venideros vamos a oir hablar bastante de él.


Function CambiaCCCxIBAN(sCCC As String, sPais As String) As String
'El pais ha de entrar según la codificación de la norma ISO3166
'El CCC ha de entrar con 20 caracteres valores válidos del 0 al 9

Dim sControl As String
Dim iPos As Integer
Dim iLen As Integer
Dim sDC As String
Dim sParte As String

On Error Resume Next

'Compruebo que los valores de entrada sean aceptables.
If Len(sPais) <> 2 Then
    CambiaCCCxIBAN = Null
    Exit Function
End If
If Not IsNumeric(sCCC) Then
    CambiaCCCxIBAN = Null
    Exit Function
End If

'Primer atisbo de IBAN (CCC + Pais + 00)
sControl = sCCC & sPais & "00"
'Cambia los caracteres del pais por el código numerico
sControl = Replace(sControl, "A", "10")
sControl = Replace(sControl, "B", "11")
sControl = Replace(sControl, "C", "12")
sControl = Replace(sControl, "D", "13")
sControl = Replace(sControl, "E", "14")
sControl = Replace(sControl, "F", "15")
sControl = Replace(sControl, "G", "16")
sControl = Replace(sControl, "H", "17")
sControl = Replace(sControl, "I", "18")
sControl = Replace(sControl, "J", "19")
sControl = Replace(sControl, "K", "20")
sControl = Replace(sControl, "L", "21")
sControl = Replace(sControl, "M", "22")
sControl = Replace(sControl, "N", "23")
sControl = Replace(sControl, "O", "24")
sControl = Replace(sControl, "P", "25")
sControl = Replace(sControl, "Q", "26")
sControl = Replace(sControl, "R", "27")
sControl = Replace(sControl, "S", "28")
sControl = Replace(sControl, "T", "29")
sControl = Replace(sControl, "U", "30")
sControl = Replace(sControl, "V", "31")
sControl = Replace(sControl, "W", "32")
sControl = Replace(sControl, "X", "33")
sControl = Replace(sControl, "Y", "34")
sControl = Replace(sControl, "Z", "35")

'Cálculo del dígito de control IBAN
'Empleo la segunda parte del cálculo de la norma ISO 7604 que es partir la cadena en trozos de 9 dígitos
iPos = 1: iLen = 9
sParte = Mid(sControl, iPos, iLen)
Do
    sDC = CStr(sParte Mod 97)
    If iPos + iLen > Len(sControl) Then Exit Do
    iPos = iPos + iLen
    If Len(sDC) = 2 Then
        iLen = 7
    Else
        iLen = 8
    End If
    sParte = sDC & Mid(sControl, iPos, iLen)
Loop
sDC = 98 - Int(sDC)
If Len(sDC) < 2 Then
    sDC = "0" & sDC
End If
'Composición final del IBAN (Pais + DC + CCC)
CambiaCCCxIBAN = sPais & sDC & sCCC

End Function





Imprimir página | Cerrar ventana