Hy vọng đúng cái bạn cần, cái này mình đang dùng.
Option Explicit
Function TVND(number) As String
Dim MyArray, S00, i As Integer
Dim str As String, str1 As String
str = Format(Fix(Abs(number)), "000000000000000000")
MyArray = Array("không ", "m" & ChrW(7897) & "t ", "hai ", "ba ", "b" & ChrW(7889) & "n ", "n" & ChrW(259) & "m ", "sáu ", "b" & ChrW(7843) & "y ", "tám ", "chín ", "tri" & ChrW(7879) & "u ", "ngàn ", "t" & ChrW(7927) & " ", "tri" & ChrW(7879) & "u ", "ngàn ", "", "tr" & ChrW(259) & "m ", "m" & ChrW(432) & ChrW(417) & "i ", "không " & "m" & ChrW(432) & ChrW(417) & "i" & " không ", "không " & "m" & ChrW(432) & ChrW(417) & "i", "l" & ChrW(7867), "m" & ChrW(432) & ChrW(417) & "i" & " không", "m" & ChrW(432) & ChrW(417) & "i", "m" & ChrW(432) & ChrW(417) & "i" & " n" & ChrW(259) & "m", "m" & ChrW(432) & ChrW(417) & "i" & " l" & ChrW(259) & "m", "m" & ChrW(7897) & "t " & "m" & ChrW(432) & ChrW(417) & "i", "m" & ChrW(432) & ChrW(7901) & "i", "m" & ChrW(432) & ChrW(417) & "i" & " m" & ChrW(7897) & "t", "m" & ChrW(432) & ChrW(417) & "i" & " m" & ChrW(7889) & "t", "Âm ", ChrW(273) & ChrW(7891) & "ng ", "", "")
If Len(str) = 0 Then
TVND = "Không " & ChrW(273) & ChrW(7891) & "ng"
ElseIf Len(str) >= 19 Then
TVND = "S" & ChrW(7889) & " quá l" & ChrW(7899) & "n. Xin vui lòng ki" & ChrW(7875) & "m tra l" & ChrW(7841) & "i! C" & ChrW(7843) & "m " & ChrW(417) & "n"
Else
If number = 0 Then
TVND = MyArray(0)
Else
TVND = ""
End If
For i = 1 To Len(str)
If Left(str, i) <> 0 And Mid(str, (Int((i + 2) / 3) - 1) * 3 + 1, 3) <> 0 Then
TVND = TVND & MyArray(Mid(str, i, 1)) & MyArray(-(9 + i / 3) * (i Mod 3 = 0) - (15 + i Mod 3) * (i Mod 3 <> 0))
ElseIf i = 9 And Mid(str, 7, 3) = 0 And Left(str, 6) <> 0 Then
TVND = TVND & MyArray(12)
End If
Next
TVND = IIf(number = 0, MyArray(0) & MyArray(30), "") & IIf(Fix(number) <> 0, TVND & MyArray(30), "") & IIf(Fix(number) <> 0 And Fix(number) <> number, MyArray(31), "") & IIf(Fix(number) <> number, IIf(Abs(number - Fix(number)) < 0.1, "", MyArray(Left(Right(Format(Abs(number), "#.00"), 2), 1)) & MyArray(17)) & MyArray(Right(Format(number, "#.00"), 1)) & MyArray(32), "")
TVND = Trim(Replace(Replace(Replace(Replace(Replace(Replace(Replace(TVND, MyArray(18), MyArray(15)), MyArray(19), MyArray(20)), MyArray(21), MyArray(22)), MyArray(23), MyArray(24)), MyArray(25), MyArray(26)), MyArray(27), MyArray(28)), ", " & MyArray(30), " " & MyArray(30)))
If number < 0 Then
TVND = MyArray(29) & TVND
End If
TVND = UCase(Left(TVND, 1)) & Mid(TVND, 2) & "."
End If
End Function