【VBAマクロ(Excel)】Unicodeエスケープシーケンス変換(デコード)ツール【Office】

Software

はじめに

「\u3042\u3044\u3046\u3048\u304a」の様なUnicodeエスケープシーケンスへエンコードされた文字列をVBAマクロで変換(デコード)する方法を記載します。
オンラインで変換(デコード)してくれるサイトはよくありますが、ローカルで変換(デコード)する必要があったのでマクロでやることにしました。

Unicodeエスケープシーケンス変換(デコード)ツール(Excel VBA マクロ)

UnicodeエスケープシーケンスをデコードするVBAマクロ

Excelを開き、Alt + F11を押して以下ソースを貼り付けます。

Function uniDecode(ByVal strWk As String) As String
    On Error GoTo Err_uniDecode:
    uniDecode = ""

    Dim digit4 As Integer
    digit4 = 4 'Unicode Escape Sequenceは4桁

    Dim i As Integer

    uniFlg = False

    '1文字ずつ処理
    For i = 1 To Len(strWk)
        If (uniFlg = False) And (Mid(strWk, i, 1) = "\") Then
            i = i + 1
            '\uの場合
            If Mid(strWk, i, 1) = "u" Then
                i = i + 1
                uniFlg = True
            Else
                i = i - 1
                uniFlg = False
            End If
        End If
        
        If uniFlg Then
            '4バイト分を16進変換
            uniDecode = uniDecode & ChrW("&H" & Mid(strWk, i, digit4))
            i = i + 3
            uniFlg = False
        Else
            'Unicodeでない場合
            uniDecode = uniDecode & Mid(strWk, i, 1)
        End If
    Next i

    Exit Function
    
Err_uniDecode:
    uniDecode = "uniDecodeエラーが発生しました"
End Function

応用編

A列のUnicodeエスケープシーケンスをデコードした結果をB列へ設定するマクロを作成しました。

Unicodeエスケープシーケンス変換(デコード)ツール(Excel VBA マクロ)

上記uniDecodeファンクションを利用して2行目から4行目まで変換していきます。

Sub convUni()
    For i = 2 To 4
        Cells(i, 2).Value = uniDecode(Cells(i, 1).Value)
    Next i
End Sub

上手く変換できました✌

Unicodeエスケープシーケンス変換(デコード)ツール(Excel VBA マクロ)

Unicodeエスケープシーケンスとは?

Unicodeエスケープシーケンスは、Unicode文字を表現するための特殊なエスケープ形式です。通常、プログラミング言語やテキストエディタなどで、Unicode文字を直接入力することが難しい場合や不可能な場合に使用されます。

Unicodeエスケープシーケンスはバックスラッシュ(\)に続く特定の形式を取ります。一般的な形式は\uXXXXです。ここで、XXXXは4桁の16進数で、Unicodeコードポイントを表します。例えば、文字’あ’のUnicodeコードポイントはU+3042であり、これをUnicodeエスケープシーケンスで表すと\u3042となります。

また、拡張されたUnicodeエスケープシーケンスとして、8桁の形式\UXXXXXXXXもあります。こちらは32ビットのUnicodeコードポイントを表現します。

Unicodeエスケープシーケンスは、プログラムのソースコードや文字列リテラル内で使用され、Unicode文字を含むテキストを表現するために利用されます。例えば、プログラム内で日本語や他の非ASCII文字を使用する場合、Unicodeエスケープシーケンスを使ってこれらの文字を表現することができます。

まとめ

テキストに含まれるマルチバイト文字を6桁のUnicodeエスケープシーケンスに変換するVBAマクロです。
ローカル環境で変換が必要な場合に便利です。

コメント

タイトルとURLをコピーしました