Base64Decode

Cuando hay que transmitir por internet una cadena larga que contiene (o puede contener) códigos de control (como espacios), símbolos especiales (como “&”) y caracteres de 8 o más bits, es habitual utilizar un formato, llamado “base64”, en el que todos los caracteres tienen 6 bits.

Este programa permite convertir “base64” en la codificación original.

base64decode3.bas
Attribute VB_Name = "Base64decode3"
'
' Decodifica base 64 / Decodifies base64 text
'
' Este es un proyecto VBA diseñado para ser usado de modo
' interativo desde el Editor de Visual Basic de una aplicación.
' Usa debug.print en lugar de cuadros de diálogo.
'
' This is a VBA project designed to be used interactively
' from VBA IDE. It uses debug.print instead of message boxes.
'
Function basedecode(b$)
    a$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
    salida$ = ""
    Dim mascara(4)
    Dim L As Long
    '12345678 12345678 12345678
    'aaaaaabb bbbbcccc ccdddddd
    ' [aaaaaa] [bb][bbbb] [cccc][cc] [dddddd]
 
    Dim I(4)
    For f = 1 To Len(b$) Step 4
        For g = 0 To 4
            X$ = Mid$(b$, f + g, 1)
            If X$ = "=" Then
                I(g) = 0
            Else
                I(g) = InStr(a$, X$) - 1
            End If
        Next g
            n1 = (I(0) And 63) * 4 + Int((I(1) And 48) / 16)
            n2 = (I(1) And 15) * 16 + (I(2) And 60) / 4
            n3 = ((I(2) And 3) * 64) + (I(3) And 63)
 
            salida$ = salida$ + Chr$(n1) + Chr$(n2) + Chr$(n3)
    Next
    basedecode = salida$
End Function
 
Function bin$(a)
    b$ = ""
 
    For f = 0 To 8
        If (a And (2 ^ f)) Then
            b$ = "1" + b$
        Else
            b$ = "0" + b$
        End If
    Next
    bin$ = b$
End Function
 
Sub MostrarCodigosAscii()
    Dim char As Range
 
    For Each char In ActiveDocument.Characters()
        Debug.Print char
        If Len(char.Text) = 1 Then
            Debug.Print Asc(char.Text)
        Else
            Debug.Print
        End If
    Next
End Sub