感觉这个是最好的将中文转换为拼音首字母的程序
Function pinyin(hanzi As Range) As
String
Dim i%
Dim
tmp$
For i = 1 To
Len(hanzi)
If Asc(Mid(hanzi, i, 1)) <= 126 And Asc(Mid(hanzi,
i, 1)) >= 33 Then '
126为"~" 33为"!"
tmp = Mid(hanzi, i, 1)
Else
tmp = Application.WorksheetFunction.VLookup(Mid(hanzi, i, 1),
[{"吖","A";"八","B";"嚓","C";"咑","D";"鵽","E";"发","F";"猤","G";"铪","H";"夻","J";"咔","K";"垃","L";"嘸","M";"旀","N";"噢","O";"妑","P";"七","Q";"囕","R";"仨","S";"他","T";"屲","W";"夕","X";"丫","Y";"帀","Z"}],
2)
End If
pinyin = pinyin + tmp
Next i
End Function
2013-7-4-10-57博主按:
不知因为什么,上面这个程序使得一些字不正确,反思一下,考虑有可能是因为操作系统由XP换成WIN7的原因,此原因还有待验证。
后来又找了个程序,但是还是有些字转换得不对,发现貌似是些生僻字,可能不是国标的字,所以,进行了修改,在下面加了穷举转换不正确的字,包括“解”这样的多音字。如此这番折腾,终于可以了。以后有识别不正确的字,可以在后面加上穷举就可以了。
Function vicpy(hanzi)
Dim i%
Dim tmp As
Long
Dim char$,
getpychar$, OK$
For i = 1 To
Len(hanzi)
char = Mid(hanzi, i, 1)
tmp = 65536 + Asc(char)
If (tmp >= 45217 And tmp <= 45252)
Then getpychar = "A"
If (tmp >= 45253 And tmp <= 45760)
Then getpychar = "B"
If (tmp >= 45761 And tmp <= 46317)
Then getpychar = "C"
If (tmp >= 46318 And tmp <= 46825)
Then getpychar = "D"
If (tmp >= 46826 And tmp <= 47009)
Then getpychar = "E"
If (tmp >= 47010 And tmp <= 47296)
Then getpychar = "F"
If (tmp >= 47297 And tmp <= 47613)
Then getpychar = "G"
If (tmp >= 47614 And tmp <= 48118)
Then getpychar = "H"
If (tmp >= 48119 And tmp <= 49061)
Then getpychar = "J"
If (tmp >= 49062 And tmp <= 49323)
Then getpychar = "K"
If (tmp >= 49324 And tmp <= 49895)
Then getpychar = "L"
If (tmp >= 49896 And tmp <= 50370)
Then getpychar = "M"
If (tmp >= 50371 And tmp <= 50613)
Then getpychar = "N"
If (tmp >= 50614 And tmp <= 50621)
Then getpychar = "O"
If (tmp >= 50622 And tmp <= 50905)
Then getpychar = "P"
If (tmp >= 50906 And tmp <= 51386)
Then getpychar = "Q"
If (tmp >= 51387 And tmp <= 51445)
Then getpychar = "R"
If (tmp >= 51446 And tmp <= 52217)
Then getpychar = "S"
If (tmp >= 52218 And tmp <= 52697)
Then getpychar = "T"
If (tmp >= 52698 And tmp <= 52979)
Then getpychar = "W"
If (tmp >= 52980 And tmp <= 53688)
Then getpychar = "X"
If (tmp >= 53689 And tmp <= 54480)
Then getpychar = "Y"
If (tmp >= 54481 And tmp <= 62289)
Then getpychar = "Z"
If char = "泓" Then getpychar = "H"
If char = "翟" Then getpychar = "Z"
If char = "闫" Then getpychar = "Y"
If char = "钰" Then getpychar = "Y"
If char = "佘" Then getpychar = "S"
If char = "晖" Then getpychar = "H"
If char = "葭" Then getpychar = "J"
If char = "芸" Then getpychar = "Y"