vba 64位office Excel不用ActiveX ScriptControl转换为UTF8

来源:互联网 发布:红色后代知乎 编辑:程序博客网 时间:2024/06/11 06:06
实现将日语文字转换为utf8编码功能的过程中,起初采用ActiveX部件创建scriptObject对象,直接使用encodeURIComponent来转换字符编码。但在使用过程中,有同事用64位的officeExcel,遇到在64位office上不能使用ActiceX部件,所以更换方法,直接对字符进行编码。记笔记。代码如下:
'使用ActiveX创建scriptObject对象转换字符编码,注意64位office不支持
Public Function UrlEncodeUtf8(ByRef strSource As String) As StringOn Error GoTo err5    Dim objScript As Object    Set objScript = CreateObject("ScriptControl")    objScript.Language = "Jscript"    'JavaScriptのencodeURIComponent関数で変換    UrlEncodeUtf8 = objScript.CodeObject.encodeURIComponent(strSource)    Set objScript = Nothing    Exit Function    err5:    Set objScript = Nothing     MsgBox message_box("ERROR_202") + Err.DescriptionEnd Function


‘不使用 ActiveX创建scriptObject对象转换字符编码,可在64位office上执行Function UTF8EncodeURI(ByVal szInput As String)    Dim wch, uch, szRet As String    Dim x As Integer    Dim nAsc, nAsc2, nAsc3 As String    For x = 1 To Len(szInput)        wch = Mid(szInput, x, 1)        nAsc = AscW(wch)        If nAsc < 0 Then nAsc = nAsc + 65536        If (nAsc And &HFF80) = 0 Then            szRet = szRet & wch        Else            If (nAsc And &HF000) = 0 Then                uch = "%" & Hex(((nAsc \ 2 ^ 6)) Or &HC0) & Hex(nAsc And &H3F Or &H80)                szRet = szRet & uch            Else                uch = "%" & Hex((nAsc \ 2 ^ 12) Or &HE0) & "%" & _                      Hex((nAsc \ 2 ^ 6) And &H3F Or &H80) & "%" & _                      Hex(nAsc And &H3F Or &H80)                szRet = szRet & uch            End If        End If    Next    UTF8EncodeURI = szRetEnd Function Sub W()Debug.Print UTF8EncodeURI("東京都港区赤坂")End Sub




阅读全文
0 0