How to Convert Numbers to Word using Invoke VBScript activity

Hi,

I am using below vbscript file to convert numbers to words but it is giving blank output. Do i need to change any…Please help

Function NumberToWords(ByVal Number)
    Dim Words
    Words = ""
    Dim Units, Tens, Hundreds
    Units = Array("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine")
    Tens = Array("", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety")
    Hundreds = Array("", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")

    If Number < 10 Then
        Words = Units(Number)
    ElseIf Number < 20 Then
        Words = Hundreds(Number - 10)
    ElseIf Number < 100 Then
        Words = Tens(Int(Number / 10)) & " " & Units(Number Mod 10)
    ElseIf Number < 1000 Then
        Words = Units(Int(Number / 100)) & " Hundred " & NumberToWords(Number Mod 100)
    ElseIf Number < 1000000 Then
        Words = NumberToWords(Int(Number / 1000)) & " Thousand " & NumberToWords(Number Mod 1000)
    Else
        Words = NumberToWords(Int(Number / 1000000)) & " Million " & NumberToWords(Number Mod 1000000)
    End If

    NumberToWords = Trim(Words)
End Function

Function Main(Num)
    Main = NumberToWords(CLng(Num))
End Function

@Yoichi Please help

Regards,

Hi, Looks like there are posts already about this topic.
Convert Number to words - Help - UiPath Community Forum

Hi,

The following sample may help you.

Sample
Sample20250110-1a.zip (5.0 KB)

note: it seems Hundreds array is not correct in the above vb script.

Regards,

Thank you @Yoichi

Could you please help me to solve using Invoke VBScript activity??

Please help!!

Thanks,

Hi,

Basically, I don’t recommend to use VBScript because it’s already deprecated.
However, how about the following?

Sample20250111-1a.zip (2.9 KB)

It’s necessary to modify the script as the following.

Dim in_number,res
in_number = WScript.Arguments(0)
res= NumberToWords(CLng(in_number))
WScript.Echo res

Function NumberToWords(ByVal Number)
Dim Words
Words = ""
Dim Units, Tens, Hundreds
Units = Array("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine")
Tens = Array("", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety")
Hundreds = Array( "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")
If Number < 10 Then
    Words = Units(Number)
ElseIf Number < 20 Then
    Words = Hundreds(Number - 10)
ElseIf Number < 100 Then
    Words = Tens(Int(Number / 10)) & " " & Units(Number Mod 10)
ElseIf Number < 1000 Then
    Words = Units(Int(Number / 100)) & " Hundred " & NumberToWords(Number Mod 100)
ElseIf Number < 1000000 Then
    Words = NumberToWords(Int(Number / 1000)) & " Thousand " & NumberToWords(Number Mod 1000)
Else
    Words = NumberToWords(Int(Number / 1000000)) & " Million " & NumberToWords(Number Mod 1000000)
End If
NumberToWords = Trim(Words)
End Function

Function NumberToWords(ByVal Number)
Dim Words
Words = “”

Dim Units, Tens, Teens
Units = Array("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine")
Tens = Array("", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety")
Teens = Array("Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")

If Number = 0 Then
    Words = "Zero"
ElseIf Number < 10 Then
    Words = Units(Number)
ElseIf Number < 20 Then
    Words = Teens(Number - 10)
ElseIf Number < 100 Then
    Words = Tens(Int(Number / 10)) & IIf(Number Mod 10 > 0, " " & Units(Number Mod 10), "")
ElseIf Number < 1000 Then
    Words = Units(Int(Number / 100)) & " Hundred" & IIf(Number Mod 100 > 0, " and " & NumberToWords(Number Mod 100), "")
ElseIf Number < 1000000 Then
    Words = NumberToWords(Int(Number / 1000)) & " Thousand" & IIf(Number Mod 1000 > 0, " " & NumberToWords(Number Mod 1000), "")
ElseIf Number < 1000000000 Then
    Words = NumberToWords(Int(Number / 1000000)) & " Million" & IIf(Number Mod 1000000 > 0, " " & NumberToWords(Number Mod 1000000), "")
Else
    Words = NumberToWords(Int(Number / 1000000000)) & " Billion" & IIf(Number Mod 1000000000 > 0, " " & NumberToWords(Number Mod 1000000000), "")
End If

NumberToWords = Trim(Words)

End Function

Function Main(Num)
Main = NumberToWords(CLng(Num))
End Function