小さい会社の1人SEの開発記というか奮戦記

  1. Excel
  2. 1780 view

日本語をエンコードする【Excel VBA】

日本語を含めた文字をQRコード化しようとした時、データーをエンコードする必要がありますよね。今回はそのエンコード化についてまとめます。

それはエクセルの64ビット化から始まった

QRコードをMicrosoft BarCode Controlで作っている人はかなりいると思います。私もだいぶ前から使っています。ある時期から「QRコード読めません!」と言う声が増え始めて来ました。よくよく調べてみると最近パソコンを変えた人からばかりです。Microsoft365をクリーンインストールすると64ビット版が入る様です。2013からアップデートした人は32ビット版が入っています。

バージョン依存による動作不良となると作り込みが必要で、奮戦記の始まりです。

とりあえず動作する関数を作り込む

色々調べた奮戦記の部分は割愛し、作り込んだ部分です。エンコード、デコードともに正常動作はしていますが、動作保証はしませんので使う場合は自己責任にてお願い致します。

エンコード

Function URL_Encode(ByVal TXT_INPUT As String) As String

    Dim OBJ_HTMLFILE As Object
    Dim OBJ_ELEMENT As Object

    TXT_INPUT = Replace(TXT_INPUT, "\", "\\")
    TXT_INPUT = Replace(TXT_INPUT, "'", "\'")

    Set OBJ_HTMLFILE = CreateObject("htmlfile")
    Set OBJ_ELEMENT = OBJ_HTMLFILE.createElement("span")
    OBJ_ELEMENT.setAttribute "id", "response"
    OBJ_HTMLFILE.appendChild OBJ_ELEMENT
    OBJ_HTMLFILE.parentWindow.execScript "document.getElementById('response').innerText = encodeURIComponent('" & TXT_INPUT & "');", "JScript"
    URL_Encode = OBJ_ELEMENT.innerText

End Function

デコード

Function URL_Decode(ByVal TXT_INPUT As String) As String

    Dim OBJ_HTMLFILE As Object
    Dim OBJ_ELEMENT As Object

    TXT_INPUT = Replace(TXT_INPUT, "\", "\\")
    TXT_INPUT = Replace(TXT_INPUT, "'", "\'")

    Set OBJ_HTMLFILE = CreateObject("htmlfile")
    Set OBJ_ELEMENT = OBJ_HTMLFILE.createElement("span")
    OBJ_ELEMENT.setAttribute "id", "response"
    OBJ_HTMLFILE.appendChild OBJ_ELEMENT
    OBJ_HTMLFILE.parentWindow.execScript "document.getElementById('response').innerText = decodeURIComponent('" & TXT_INPUT & "');", "JScript"
    URL_Encode = OBJ_ELEMENT.innerText

End Function

まとめ

「今頃何言ってんだい。」と言う声が聞こえて来そうですが、見て見ぬふりをして先送りしていると最後はどうしようもなくなると言うお話でした。対策は余裕のあるうちに行いましょう。

Excelの最近記事

  1. 日本語をエンコードする【Excel VBA】

  2. 商品コードなど長い数値だけの文字列を指数表示させない【Excel VBA】

  3. VBAで改行を指定する【Excel】

  4. 入力規則のプルダウン連携【Excel】

  5. 最短手順で計算式を保護する【Excel】

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


お薦め書籍

最近の記事

  1. Access

    Accessの数値型ではまる・・・。
  2. Excel

    日本語をエンコードする【Excel VBA】
  3. Access

    クエリで日付から曜日を算出する。【Access】
  4. PCパーツ

    ASUS AMD Ryzen 4000 シリーズ搭載小型ベア…
  5. Microsoft365

    コンデジをTeamsのWebカメラに使う
  6. SQL Server

    SQL文で今日から7日前までを指定する