Function SpeakNum(Number) As String
Dim MyArray, i As Long
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")
For i = 1 To Len(Str)
If Left(Str, i) <> 0 And Mid(Str, (Int((i + 2) / 3) - 1) * 3 + 1, 3) <> 0 Then
SpeakNum = SpeakNum & 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
SpeakNum = SpeakNum & MyArray(12)
End If
Next
SpeakNum = Trim(Replace(Replace(Replace(Replace(Replace(Replace(SpeakNum, MyArray(18), MyArray(15)), MyArray(19), MyArray(20)), MyArray(21), MyArray(22)), MyArray(23), MyArray(24)), MyArray(25), MyArray(26)), MyArray(27), MyArray(28)))
End Function
Function SpeakVIEDate(ByVal lDate As Date, Optional ByVal Separator As String = " ") As String
Dim slb1 As String, slb2 As String, slb3 As String
Dim sDay As String, sMonth As String, sYear As String
Dim lDay As Long, lMonth As Long, lYear As Long
slb1 = "ngày "
slb2 = "tháng "
slb3 = "n" & ChrW(259) & "m "
lDay = Day(lDate)
lMonth = Month(lDate)
lYear = Year(lDate)
sDay = SpeakNum(lDay)
If lMonth = 1 Then
sMonth = "giêng"
ElseIf lMonth = 4 Then
sMonth = "t" & ChrW(432)
Else
sMonth = SpeakNum(lMonth)
End If
sYear = SpeakNum(lYear)
SpeakVIEDate = slb1 & sDay & Separator & slb2 & sMonth & Separator & slb3 & sYear
End Function