大虾们,不知道为什么我用这段拼音生成错误有的字生成不了拼音。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