日本語を含めた文字を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
まとめ
「今頃何言ってんだい。」と言う声が聞こえて来そうですが、見て見ぬふりをして先送りしていると最後はどうしようもなくなると言うお話でした。対策は余裕のあるうちに行いましょう。
この記事へのコメントはありません。