虫虫技术在线--技术决定出路

当前位置: 首页 > 办公 > Excel >

Excel汉字转拼音的方法(3)

时间:2010-07-20 22:50来源:虫虫技术在线收集整理 作者:虫虫编辑 点击:
If IFELanguage = 0 Then Exit Function Args(0) = H30000 Args(1) = H40000100 Args(2) = Len(HzStr) Args(3) = StrPtr(HzStr) Args(4) = 0 Args(5) = VarPtr(ResultPtr) For i = 0 To 5 vt(i) = vbLong pArgs(i) =

     If IFELanguage = 0 Then Exit Function
    
     Args(0) = &H30000
     Args(1) = &H40000100
     Args(2) = Len(HzStr)
     Args(3) = StrPtr(HzStr)
     Args(4) = 0
     Args(5) = VarPtr(ResultPtr)
        
     For i = 0 To 5
         vt(i) = vbLong
         pArgs(i) = VarPtr(Args(i)) - 8
     Next
        
     DispCallFunc IFELanguage, 20, 4, vbLong, 6, vt(0), pArgs(0), ret
    
     MoveMemory TinyM, ByVal ResultPtr, 4 * 3
     If TinyM.cchOutput > 0 Then
         ReDim py(0 To TinyM.cchOutput * 2 - 1)
         MoveMemory py(0), ByVal TinyM.pwchOutput, TinyM.cchOutput * 2
         IFELanguage_GetMorphResult = py
     End If
     CoTaskMemFree (ResultPtr)
End Function
Private Function GetInitial(py As String) As String
     Dim Char1 As String
     Dim Char2 As String
    
     Char1 = Left(py, 1)
     Char2 = Mid(py, 2, 1)
    
     GetInitial = Char1
     If Not pvOnlyOneChar Then
         Select Case Char1
             Case "z", "c", "s"
                 If Char2 = "h" Then GetInitial = GetInitial + Char2
         End Select
     End If
    
End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''' Subroutine: GetPinYin
'''
''' Purpose:     返回汉字的拼音
'''
''' Arguments:   HzStr - 待转换的拼音
'''
'''
''' Date             Developer            Action
''' --------------------------------------------------------------------------
''' 02 April 2007    tt.t                 Create
'''
Public Function GetPinYin(HzStr As String) As String
     Dim i As Integer
     Dim tmpStr As String
    
     GetPinYin = ""
     If HzStr <> "" Then
         If pvUseSeperator Or pvInitialOnly Then
             For i = 1 To Len(HzStr)
                 tmpStr = IFELanguage_GetMorphResult(Mid(HzStr, i, 1))
                 If tmpStr <> "" Then
                     If pvInitialOnly Then
                         GetPinYin = GetPinYin & GetInitial(tmpStr) & pvSeperator
                     Else
                         GetPinYin = GetPinYin & tmpStr & pvSeperator
                     End If
                 End If
             Next
             If Len(GetPinYin) > 0 Then GetPinYin = Left(GetPinYin, Len(GetPinYin) - 1) (责任编辑:admin)

顶一下
(0)
0%
踩一下
(1)
100%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容