货币金额大写转换库(VB) Money2String.dll
来源:互联网 发布:linux部署多个tomcat 编辑:程序博客网 时间:2024/05/20 22:39
- Option Explicit
- Public Function GetCnString(ByVal MoneyString As String) As String
- Dim i As Long
- Dim k As Long
- Dim j As Long
- Dim n As Long
- Dim rmbCapital As String
- Dim intString As String
- Dim decString As String
- Dim tmpString() As String
- Dim cnNumber() As String
- Dim cnUnit() As String
- On Error GoTo cnstr_err:
- cnNumber = Split("零,壹,贰,叁,肆,伍,陆,柒,捌,玖", ",")
- cnUnit = Split("分,角,元,拾,佰,仟,万,拾,佰,仟,亿,拾,佰,仟,兆,拾,佰,仟,京,拾,佰,仟,垓,拾,佰,仟", ",")
- decString = ""
- intString = MoneyString
- tmpString = Split(MoneyString, ".")
- If UBound(tmpString) Then
- intString = tmpString(0)
- decString = tmpString(1)
- End If
- intString = intString & Left(decString & "00", 2)
- rmbCapital = ""
- k = Len(intString) - 1
- If k > 25 Then
- rmbCapital = MoneyString
- Else
- If Val(intString) = 0 Then
- rmbCapital = "零元"
- Else
- For i = 0 To k
- j = Val(Mid(intString, i + 1, 1))
- rmbCapital = rmbCapital & cnNumber(j) & cnUnit(k - i)
- Next i
-
- rmbCapital = Replace(rmbCapital, "零分", "零")
- rmbCapital = Replace(rmbCapital, "零角", "零")
- rmbCapital = Replace(rmbCapital, "零拾", "零")
- rmbCapital = Replace(rmbCapital, "零佰", "零")
- rmbCapital = Replace(rmbCapital, "零仟", "零")
-
- rmbCapital = Replace(rmbCapital, "零零零", "零")
- rmbCapital = Replace(rmbCapital, "零零", "零")
-
- rmbCapital = Replace(rmbCapital, "零元", "元")
- rmbCapital = Replace(rmbCapital, "零万", "万")
- rmbCapital = Replace(rmbCapital, "零亿", "亿")
- rmbCapital = Replace(rmbCapital, "零兆", "兆")
- rmbCapital = Replace(rmbCapital, "零京", "京")
- rmbCapital = Replace(rmbCapital, "零垓", "垓")
-
- rmbCapital = Replace(rmbCapital, "垓京兆亿万", "垓")
- rmbCapital = Replace(rmbCapital, "垓京兆亿", "垓")
- rmbCapital = Replace(rmbCapital, "京兆亿万", "京")
- rmbCapital = Replace(rmbCapital, "垓京兆", "垓")
- rmbCapital = Replace(rmbCapital, "京兆亿", "京")
- rmbCapital = Replace(rmbCapital, "兆亿万", "兆")
- rmbCapital = Replace(rmbCapital, "垓京", "垓")
- rmbCapital = Replace(rmbCapital, "垓兆", "垓")
- rmbCapital = Replace(rmbCapital, "垓亿", "垓")
- rmbCapital = Replace(rmbCapital, "垓万", "垓")
- rmbCapital = Replace(rmbCapital, "京兆", "京")
- rmbCapital = Replace(rmbCapital, "京亿", "京")
- rmbCapital = Replace(rmbCapital, "京万", "京")
- rmbCapital = Replace(rmbCapital, "兆亿", "兆")
- rmbCapital = Replace(rmbCapital, "兆万", "兆")
- rmbCapital = Replace(rmbCapital, "亿万", "亿")
-
-
- If Mid(rmbCapital, Len(rmbCapital), 1) = "零" Then
- rmbCapital = Left(rmbCapital, Len(rmbCapital) - 1)
- End If
-
- If Left(rmbCapital, 1) = "元" Then
- rmbCapital = Mid(rmbCapital, 2, Len(rmbCapital) - 1)
- End If
-
- If Left(rmbCapital, 1) = "零" Then
- rmbCapital = Mid(rmbCapital, 2, Len(rmbCapital) - 1)
- End If
- End If
- End If
- cnstr_exit:
- GetCnString = rmbCapital
- Exit Function
- cnstr_err:
- rmbCapital = ""
- Resume cnstr_exit
- End Function
- Public Function GetEnString(ByVal MoneyString As String) As String
- Dim n As Long
- Dim k As Long
- Dim i1 As Long
- Dim i2 As Long
- Dim i3 As Long
- Dim curPoint As Long
- Dim strbuff1 As String
- Dim strBuff2 As String
- Dim strBuff3 As String
- Dim engCapital As String
- Dim intString As String
- Dim decString As String
- Dim tmpString() As String
- Dim enSmallNumber() As String
- Dim enLargeNumber() As String
- Dim enUnit() As String
- On Error GoTo enstr_err
- enSmallNumber = Split(",ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,ELEVEN,TWELVE,THIRTEEN,FOURTEEN,FIFTEEN,SIXTEEN,SEVENTEEN,EIGHTEEN,NINETEEN", ",")
- enLargeNumber = Split("TWENTY,THIRTY,FORTY,FIFTY,SIXTY,SEVENTY,EIGHTY,NINETY", ",")
- enUnit = Split(",THOUSAND,MILLION,BILLION,TRILLION", ",")
- decString = ""
- intString = MoneyString
- tmpString = Split(MoneyString, ".")
- If UBound(tmpString) Then
- intString = tmpString(0)
- decString = tmpString(1)
- End If
- decString = Left(decString & "00", 2)
- engCapital = ""
- curPoint = Len(intString)
- If curPoint > 0 And curPoint < 16 Then
-
- k = 0
- Do While (curPoint > 0)
- strbuff1 = ""
- strBuff2 = ""
- strBuff3 = ""
- If curPoint >= 3 Then
- n = Val(Mid(intString, curPoint - 2, 3))
- If n <> 0 Then
- i1 = Int(n / 100)
- i2 = Int((n - i1 * 100) / 10)
- i3 = n Mod 10
- If i1 <> 0 Then
- strbuff1 = enSmallNumber(i1) + " HUNDRED "
- End If
-
- If i2 <> 0 Then
- If i2 = 1 Then
- strBuff2 = enSmallNumber(i2 * 10 + i3) & " "
- Else
- strBuff2 = enLargeNumber(i2 - 2) & " "
- If i3 <> 0 Then
- strBuff3 = enSmallNumber(i3) & " "
- End If
- End If
- Else
- If i3 <> 0 Then
- strBuff3 = enSmallNumber(i3) & " "
- End If
- End If
- engCapital = strbuff1 & strBuff2 & strBuff3 & enUnit(k) & " " & engCapital
- End If
- Else
- n = Val(Left(intString, curPoint))
- If n <> 0 Then
- i2 = Int(n / 10)
- i3 = n Mod 10
- If i2 <> 0 Then
- If i2 = 1 Then
- strBuff2 = enSmallNumber(i2 * 10 + i3) & " "
- Else
- strBuff2 = enLargeNumber(i2 - 2) & " "
- If i3 <> 0 Then
- strBuff3 = enSmallNumber(i3) & " "
- End If
- End If
- Else
- If i3 <> 0 Then
- strBuff3 = enSmallNumber(i3) & " "
- End If
- End If
- engCapital = strBuff2 & strBuff3 & enUnit(k) & " " & engCapital
- End If
- End If
- k = k + 1
- curPoint = curPoint - 3
- Loop
- engCapital = Trim(engCapital)
-
- strBuff2 = ""
- strBuff3 = ""
- n = Val(decString)
- If n <> 0 Then
- i2 = Int(n / 10)
- i3 = n Mod 10
- If i2 <> 0 Then
- If i2 = 1 Then
- strBuff2 = enSmallNumber(i2 * 10 + i3) & " "
- Else
- strBuff2 = enLargeNumber(i2 - 2) & " "
- If i3 <> 0 Then
- strBuff3 = enSmallNumber(i3) & " "
- End If
- End If
- Else
- If i3 <> 0 Then
- strBuff3 = enSmallNumber(i3) & " "
- End If
- End If
-
-
- If Len(engCapital) > 0 Then
- engCapital = engCapital & " AND CENTS " & strBuff2 & strBuff3
- Else
- engCapital = "CENTS " & strBuff2 & strBuff3
- End If
- End If
- engCapital = Trim(engCapital)
- Else
- engCapital = MoneyString
- End If
- enstr_exit:
- GetEnString = engCapital
- Exit Function
- enstr_err:
- engCapital = ""
- Resume enstr_exit
- End Function