妳的孢子都在這個範圍之外。..
解決辦法只能是找壹個更完整的碼表...例如,它包含壹些GBK字符。
補充:我發現了壹個替代方案:
====================================
模塊:
選項顯式
私人常數IME _ ESC _ MAX _ KEY = &H1005
私人常數IME _ ESC _ IME _ NAME = & amp;H1006
私人常數GCL _ reverse conversion = & amp;氘
私有聲明函數GetKeyboardLayoutList Lib " user 32 "(ByVal nBuff壹樣長,lpList壹樣長)壹樣長
私有聲明函數ImmEscape Lib "imm32.dll "別名" ImmEscapeA" (ByVal hkl As Long,ByVal himc As Long,ByVal un As Long,lpv As Any)Long
私有聲明函數ImmGetConversionList Lib " imm32 . dll "別名" ImmGetConversionListA "(ByVal hkl As Long、ByVal himc As Long、ByVal lpsz As String、lpCandidateList As Any、ByVal dwBufLen As Long、ByVal uFlag As Long)Long
私有聲明函數IsDBCSLeadByte Lib " kernel 32 "(ByVal bTestChar As Byte)壹樣長
公共函數GetChineseSpell(ByVal中文為字符串,可選PYTYPE為Integer = 0,可選分隔符為String = " ")為字符串
If Len(Trim(中文))& gt那麽0
暗淡我壹樣長
將s作為字符串變暗
s =空格(255)
Dim IMEInstalled為布爾值
Dim j As Long
Dim a() As Long
ReDim a(255)壹樣長
j = GetKeyboardLayoutList(255,a(LBound(a)))
對於i = LBound(a)至LBound(a) + j - 1
如果ImmEscape(a(i),0,IME IME名字,ByVal s)那麽
如果Trim("微軟拼音輸入法")= replace (trim (s),chr (0),"")那麽。
IMEInstalled = True
為...退出
如果…就會結束
如果…就會結束
接下來我
如果我安裝了
中文=修剪(中文)
Dim sChar作為字符串
Dim Buffer0()為字節
Dim bBuffer0()為字節
Dim bBuffer()作為字節
Dim k As Long
Dim l壹樣長
Dim m As Long
對於j = 0到Len(中文)- 1
sChar = Mid(中文,j + 1,1)
如果不是InStr(“”./?、][{}""'';:!〈〉「」『』|〖〗()〔〕{}…—.,""'';:?/\!“,sChar)& gt;那麽0
Buffer0 = StrConv(sChar,vbFromUnicode)
如果IsDBCSLeadByte(Buffer0(0))則
k = ImmEscape(a(i),0,IME_ESC_MAX_KEY,Null)
如果k那麽
l = ImmGetConversionList(a(i),0,sChar,0,0,GCL_REVERSECONVERSION)
如果我那麽
s =空格(255)
如果ImmGetConversionList(a(i),0,sChar,ByVal s,l,GCL_REVERSECONVERSION)則
bBuffer0 = StrConv(s,vbFromUnicode)
ReDim bBuffer(k * 2 - 1)
對於m = bBuffer0(24)到bBuffer0(24) + k * 2 - 1
bBuffer(m-bBuffer 0(24))= bBuffer 0(m)
下壹個m
sChar = Trim(StrConv(bBuffer,vbUnicode))
If InStr(sChar,vbNullChar)然後
sChar = Trim(Left(sChar,InStr(sChar,vbNullChar) - 1))
如果…就會結束
如果…就會結束
如果…就會結束
如果…就會結束
如果…就會結束
如果…就會結束
GetChineseSpell = GetChineseSpell & amp;Switch(PYTYPE = 0,sChar,PYTYPE = 1,Left(sChar,Len(sChar) - 1),PYTYPE = 2,UCase(Left(sChar,1))& amp;IIf(PYTYPE = 2,"",Delimiter)' '返回整個拼寫。
下壹個j
Else ' '沒有安裝“微軟拼音輸入法”,返回了壹個空格。
GetChineseSpell = " "
如果…就會結束
其他
GetChineseSpell = " " ' '輸入是空字符串。
如果…就會結束
結束功能
下面是表單代碼:
私有子命令1_Click()
打印GetChineseSpell(《孢子賦》,2)
末端接頭
==============================
註意,
1.確保系統安裝了微軟拼音輸入法,否則會返回壹個空格。..
2.模塊中沒有標點符號,或者沒有完全標點符號。妳應該在程序中自己處理或修改模塊。
3.用法有三個參數,0是返回帶單調性的整個拼寫,1是返回完整的拼音,2是返回拼音的首字母。..
測試通過,VB妮可。