大虾们,不知道为什么我用这段拼音生成错误有的字生成不了拼音。Public Function GetChinesePYCode(ByVal strSource As String) As String
Dim strSerial_s As String
Dim strSerial_t As String
Dim strTmp As String
Dim j As Integer
Dim i As Integer
Dim strHelpChar As String
Dim zt As String
Dim kg As Boolean
Dim kszm As Boolean
Dim dc As String
strSerial_s = "啊芭擦搭蛾发噶哈击喀垃妈拿哦啪期然撒塌挖昔压匝座"
strSerial_t = "abcdefghjklmnopqrstwxyz"
kszm = True
'If Len(strSource) >= 20 Then strSource = Left(strSource, 20)
For i = 1 To Len(strSource)
strHelpChar = Mid(strSource, i, 1)
' MsgBox strHelpChar
If strHelpChar <> "1" And strHelpChar <> "2" And strHelpChar <> "3" And strHelpChar <> "4" And strHelpChar <> "5" And strHelpChar <> "6" And strHelpChar <> "7" And strHelpChar <> "8" And strHelpChar <> "9" And strHelpChar <> "0" And strHelpChar <> "," And strHelpChar <> "!" And strHelpChar <> "(" And strHelpChar <> ")" And strHelpChar <> "'" And strHelpChar <> ";" And strHelpChar <> "?" And strHelpChar <> "!" And strHelpChar <> "," And strHelpChar <> "(" And strHelpChar <> ")" And strHelpChar <> "-" And strHelpChar <> "+" And strHelpChar <> "。" And strHelpChar <> "‘" Then
If Asc(strHelpChar) >= 0 And Asc(strHelpChar) <= 256 Then
zt = "字母"
kg = False
If strHelpChar = " " Then
kg = True
kszm = True
End If
Else
zt = "汉字"
kszm = True
kg = False
End If
If zt = "字母" And kg = False Then
If kszm = True Then
' MsgBox "ok"
kszm = False
If Asc(strHelpChar) >= Asc(Left(strSerial_s, 1)) And Asc(strHelpChar) <= Asc(Right(strSerial_s, 1)) Then
'-------------------------------
If Asc(strHelpChar) = Asc(Right(strSerial_s, 1)) Then
GetChinesePYCode = UCase(GetChinesePYCode & Right(strSerial_t, 1))
Else
For j = 2 To Len(strSerial_s)
strTmp = Mid(strSerial_s, j, 1)
If Asc(strHelpChar) < Asc(strTmp) Then
GetChinesePYCode = UCase(GetChinesePYCode & Mid(strSerial_t, j - 1, 1))
Exit For
End If
Next j
End If
Else
GetChinesePYCode = UCase(GetChinesePYCode & strHelpChar)
End If End If
End If
If zt = "汉字" Then
If Asc(strHelpChar) >= Asc(Left(strSerial_s, 1)) And Asc(strHelpChar) <= Asc(Right(strSerial_s, 1)) Then
'-------------------------------
If Asc(strHelpChar) = Asc(Right(strSerial_s, 1)) Then
GetChinesePYCode = UCase(GetChinesePYCode & Right(strSerial_t, 1))
Else
For j = 2 To Len(strSerial_s)
strTmp = Mid(strSerial_s, j, 1)
If Asc(strHelpChar) < Asc(strTmp) Then
GetChinesePYCode = UCase(GetChinesePYCode & Mid(strSerial_t, j - 1, 1))
Exit For
End If
Next j
End If
Else
GetChinesePYCode = UCase(GetChinesePYCode & strHelpChar)
End If
End If
Else
kszm = True
End If
Next i
End Function
Dim strSerial_s As String
Dim strSerial_t As String
Dim strTmp As String
Dim j As Integer
Dim i As Integer
Dim strHelpChar As String
Dim zt As String
Dim kg As Boolean
Dim kszm As Boolean
Dim dc As String
strSerial_s = "啊芭擦搭蛾发噶哈击喀垃妈拿哦啪期然撒塌挖昔压匝座"
strSerial_t = "abcdefghjklmnopqrstwxyz"
kszm = True
'If Len(strSource) >= 20 Then strSource = Left(strSource, 20)
For i = 1 To Len(strSource)
strHelpChar = Mid(strSource, i, 1)
' MsgBox strHelpChar
If strHelpChar <> "1" And strHelpChar <> "2" And strHelpChar <> "3" And strHelpChar <> "4" And strHelpChar <> "5" And strHelpChar <> "6" And strHelpChar <> "7" And strHelpChar <> "8" And strHelpChar <> "9" And strHelpChar <> "0" And strHelpChar <> "," And strHelpChar <> "!" And strHelpChar <> "(" And strHelpChar <> ")" And strHelpChar <> "'" And strHelpChar <> ";" And strHelpChar <> "?" And strHelpChar <> "!" And strHelpChar <> "," And strHelpChar <> "(" And strHelpChar <> ")" And strHelpChar <> "-" And strHelpChar <> "+" And strHelpChar <> "。" And strHelpChar <> "‘" Then
If Asc(strHelpChar) >= 0 And Asc(strHelpChar) <= 256 Then
zt = "字母"
kg = False
If strHelpChar = " " Then
kg = True
kszm = True
End If
Else
zt = "汉字"
kszm = True
kg = False
End If
If zt = "字母" And kg = False Then
If kszm = True Then
' MsgBox "ok"
kszm = False
If Asc(strHelpChar) >= Asc(Left(strSerial_s, 1)) And Asc(strHelpChar) <= Asc(Right(strSerial_s, 1)) Then
'-------------------------------
If Asc(strHelpChar) = Asc(Right(strSerial_s, 1)) Then
GetChinesePYCode = UCase(GetChinesePYCode & Right(strSerial_t, 1))
Else
For j = 2 To Len(strSerial_s)
strTmp = Mid(strSerial_s, j, 1)
If Asc(strHelpChar) < Asc(strTmp) Then
GetChinesePYCode = UCase(GetChinesePYCode & Mid(strSerial_t, j - 1, 1))
Exit For
End If
Next j
End If
Else
GetChinesePYCode = UCase(GetChinesePYCode & strHelpChar)
End If End If
End If
If zt = "汉字" Then
If Asc(strHelpChar) >= Asc(Left(strSerial_s, 1)) And Asc(strHelpChar) <= Asc(Right(strSerial_s, 1)) Then
'-------------------------------
If Asc(strHelpChar) = Asc(Right(strSerial_s, 1)) Then
GetChinesePYCode = UCase(GetChinesePYCode & Right(strSerial_t, 1))
Else
For j = 2 To Len(strSerial_s)
strTmp = Mid(strSerial_s, j, 1)
If Asc(strHelpChar) < Asc(strTmp) Then
GetChinesePYCode = UCase(GetChinesePYCode & Mid(strSerial_t, j - 1, 1))
Exit For
End If
Next j
End If
Else
GetChinesePYCode = UCase(GetChinesePYCode & strHelpChar)
End If
End If
Else
kszm = True
End If
Next i
End Function
http://expert.csdn.net/Expert/topic/1723/1723561.xml?temp=5.215091E-02