molto tempo fa avevo realizzato una cosa del genere, scartabellando in archivio sono riuscito a trovare il codice, te lo posto, anche se è decisamente grezzo e si può migliorare... ma funziona

codice:
Function NumeriPerLettere(Valore) As String

Valore = Replace(Valore, ".", "")

Dim Sez()

Unita = ""
Decine = ""
Centinaia = ""
Uni = ""
Dec = ""
Cent = ""
Sezioni = ""
NoUnits = 0

Cifre = Len(Valore)

Stringa = ""

P = 0
    
For Posizione = 1 To Cifre
    P = P + 1
    Stringa = Mid(Valore, Cifre - (Posizione - 1), 1) & Stringa
    If P = 3 Then
        Stringa = "\" & Stringa: P = 0
    End If
Next

If Left(Stringa, 1) = "\" Then Stringa = Mid(Stringa, 2, Len(Stringa))

Sezioni = Empty
Sezioni = Split(Stringa, "\")

Nsez = UBound(Sezioni) + 1

Erase Sez()
ReDim Sez(Nsez)

For S = 0 To Nsez - 1

    If Len(Sezioni(S)) < 3 Then Sezioni(S) = String(3 - Len(Sezioni(S)), "0") & Sezioni(S)
    
    If Len(Sezioni(S)) = 3 Then
        Centinaia = Mid(Sezioni(S), 1, 1)
        Select Case Centinaia
            Case "0"
                Cent = ""
            Case "1"
                Cent = "cento"
            Case Else
                Cent = Converti(Centinaia) & "cento"
        End Select
       
        Decine = Mid(Sezioni(S), 2, 1)
        
        Select Case Decine
            Case "0"
                Dec = ""
                NoUnits = 0
            Case "1"
                Dec = Converti(Decine & Mid(Sezioni(S), 3, 1))
                NoUnits = 1
                Unita = ""
            Case Else
                Dec = Converti(Decine & "0")
                NoUnits = 0
        End Select
                     
        If NoUnits <> 1 Then
            Unita = Mid(Sezioni(S), 3, 1)
            Uni = Converti(Unita)
            If (Unita = "1" Or Unita = "8") And Dec <> "" Then Dec = Mid(Dec, 1, Len(Dec) - 1)
        End If
    End If
    
    Sez(S) = Cent & Dec & Uni
    Cent = "": Dec = "": Uni = ""

Next

Finale = ""

For X = 0 To Nsez - 1
    Select Case Nsez - (X + 1)
        Case 0
            interp = ""
        Case 1
            If Sez(X) = "uno" Then
                Sez(X) = ""
                interp = "mille"
            Else
                interp = "mila"
            End If
        Case 2
            If Sez(X) = "uno" Then
                Sez(X) = "un"
                interp = "milione"
            Else
                interp = "milioni"
            End If
        Case 3
            If Sez(X) = "uno" Then
                Sez(X) = "un"
                interp = "miliardo"
            Else
                interp = "miliardi"
            End If
    End Select
    
    Finale = Finale & Sez(X) & interp

Next

NumeriPerLettere = Finale

End Function


Function Converti(Numero)

If Numero = "1" Then Stringa = "uno"
If Numero = "2" Then Stringa = "due"
If Numero = "3" Then Stringa = "tre"
If Numero = "4" Then Stringa = "quattro"
If Numero = "5" Then Stringa = "cinque"
If Numero = "6" Then Stringa = "sei"
If Numero = "7" Then Stringa = "sette"
If Numero = "8" Then Stringa = "otto"
If Numero = "9" Then Stringa = "nove"
If Numero = "10" Then Stringa = "dieci"
If Numero = "11" Then Stringa = "undici"
If Numero = "12" Then Stringa = "dodici"
If Numero = "13" Then Stringa = "tredici"
If Numero = "14" Then Stringa = "quattordici"
If Numero = "15" Then Stringa = "quindici"
If Numero = "16" Then Stringa = "sedici"
If Numero = "17" Then Stringa = "diciassette"
If Numero = "18" Then Stringa = "diciotto"
If Numero = "19" Then Stringa = "diciannove"
If Numero = "20" Then Stringa = "venti"

If Numero = "30" Then Stringa = "trenta"
If Numero = "40" Then Stringa = "quaranta"
If Numero = "50" Then Stringa = "cinquanta"
If Numero = "60" Then Stringa = "sessanta"
If Numero = "70" Then Stringa = "settanta"
If Numero = "80" Then Stringa = "ottanta"
If Numero = "90" Then Stringa = "novanta"
If Numero = "100" Then Stringa = "cento"

Converti = Stringa

End Function
va usata così:

codice:
Dim InLettere As String
InLettere = NumeriPerLettere(1234567890)
il limite è:
novecentonovantanovemiliardinovecentonovantanovemi lioninovecentonovantanovemilanovecentonovantanove

:maLOL:

Boolean