Here is a function to convert an integer to Spanish words. Maybe it will be of some use to somebody. There is probably a much more elegant way to do this but this worked for me and is correct as far as I can see.
Code:
Private Function ConvertToWords(ByRef Value As Integer) As String
Dim Strng As String 'holds string representation of Value
Strng = CStr(Value)
Dim Txt As String 'holds the word string as it is being built
Dim Curr As String 'holds the currency word
Curr = "Euros"
Dim Temp As String 'used to work on a single digit at a time
Dim Units(12) As String
Units(0) = "zero"
Units(1) = "uno"
Units(2) = "dos"
Units(3) = "tres"
Units(4) = "cuatro"
Units(5) = "cinco"
Units(6) = "seis"
Units(7) = "siete"
Units(8) = "ocho"
Units(9) = "nueve"
Units(10) = "nove"
Units(11) = "sete"
Units(12) = "quin"
Dim Tens(9) As String
Tens(0) = ""
Tens(1) = "diez"
Tens(2) = "veinte"
Tens(3) = "treinta"
Tens(4) = "cuarenta"
Tens(5) = "cincuenta"
Tens(6) = "sesenta"
Tens(7) = "setenta"
Tens(8) = "ochenta"
Tens(9) = "noventa"
Dim Teens(5)
Teens(1) = "once"
Teens(2) = "doce"
Teens(3) = "trece"
Teens(4) = "catorce"
Teens(5) = "quince"
Txt = ""
'hundreds
If Len(Strng) = 3 Then 'there are hundreds
Temp = Left(Right(Strng, 3), 1) 'take the "hundreds" digit
If Temp = "5" Then Temp = "12" 'set stem for 500s as "quin"
If Temp = "7" Then Temp = "11" 'account for siete-sete change in 700's
If Temp = "9" Then Temp = "10" 'account for nueve-nove change in 900's
Txt = Units(CInt(Temp)) 'set the hundreds word according to units list
If Temp = "1" Then 'the 100's is a special case. Only say "hundred" not "one hundred"
If Right(Strng, 2) = "00" Then 'also exactly 100 is a special case.
Txt = "Cien"
Else
Txt = "ciento" 'not exactly 100 so add correct "hundreds" word
End If
Else
If Temp = "12" Then
Txt = Txt & "ientos" 'add correct ending for 500's
Else
Txt = Txt & "cientos" 'more than 100 so make 200,300,400 etc
End If
End If
End If
'tens
If Len(Strng) <= 3 Then 'ignore numbers over 999
Temp = Right(Strng, 2) 'take the tens and units
If Temp >= "11" And Temp <= "15" Then
Txt = Txt & " " & Teens(CInt(Temp) - 10) '11 to 15 are special words. Take them from Teens array
Else
'tens
If Len(Temp) > 1 Then 'take the tens digit
Txt = Txt & " " & Tens(CInt(Left(Temp, 1))) 'and add it to the word list
End If
'units
If Len(Temp) > 1 Then 'deal if the value is 10 or more
If CInt(Right(Temp, 1)) <> "0" Then
If CInt(Left(Temp, 1)) = "1" Then 'if the tens begin with "1" need to change the spelling
Txt = Left(Txt, Len(Txt) - 1) & "ci" & Units(CInt(Right(Temp, 1)))
ElseIf CInt(Left(Temp, 1)) = "2" Then 'if tens begins with "2" change spelling differently
Txt = Left(Txt, Len(Txt) - 1) & "i" & Units(CInt(Right(Temp, 1)))
Else
If Left(Temp, 1) = "0" Then 'check for whole 10's
Txt = Txt & Units(CInt(Right(Temp, 1)))
Else
Txt = Txt & " y " & Units(CInt(Right(Temp, 1))) 'if not divisible by 10, add the units
End If
End If
End If
Else
Txt = Txt & Units(CInt(Temp)) 'this adds units to the hundreds
End If
End If
End If
If Temp = "1" Then
Txt = Txt & " " & Left(Curr, Len(Curr) - 1) 'remove the "s" for just a single Euro
Else
Txt = Txt & " " & Curr
End If
Txt = Trim(Txt) 'remove surplus spaces before and after string
Txt = UCase(Left(Txt, 1)) & Right(Txt, (Len(Txt) - 1)) 'capitalise the first letter
ConvertToWords = Txt 'return the string
End Function