vbaでのエンコード/デコードのサンプル

vba

Excel(vba)で、MD5/SHA-1/SHA-2(SHA-256)の出力、Hex/Base64エンコード/デコードを調べたので備忘録として残します。
動作検証した環境は、Windows10+Office2010です。

  • MD5/SHA1等のハッシュ値の生成、文字列のUTF8変換を実現するために、.NET Frameworkのライブラリ(mscorlib.dll)を使用します。
  • バイト列を16進数/Base64形式にエンコードしたり、その逆にデコードするために、Microsoft XMLライブラリを使用します。

サンプルは次の通りです。
実行するためには、上記の2ライブラリの参照設定が必要になります。
使用するXMLライブラリに関して、実行環境がWin7以前の場合はv2.0、Win8以降はv6.0を使用する必要があります。(Windows 8 以降の MSXML2.DOMDocument の使用方法)
今回の検証環境がWindows10であるため、以降に記載するサンプルはv6.0を使用する想定になっています。Win7以前で実行する場合、v2.0を参照設定し、DOMDocument60をDOMDocumentに置き換えてください。

実行する場合、実行ボタンを押して、マクロ名として”test”を選択し、[実行]をクリックしてください。
実行結果はイミディエイトウィンドウ上で次のように表示されます。
イミディエイトウインドウが表示されていない場合、[表示]-[イミディエイトウインドウ]をクリックしてください。
[code title=”実行結果”]input : abcdあいうえお
Hex =============
encode : 61626364e38182e38184e38186e38188e3818a
decode : abcdあいうえお
Base64 ==========
encode : YWJjZOOBguOBhOOBhuOBiOOBig==
decode : abcdあいうえお
Digest ==========
MD5 : 91783233d5c7632d6f55159416869e04
SHA-1 : ba6ce26af36e21b0e9e87fb0b1a7520e283756f0
SHA-256: c4c7f73689afac6d38b8b62fc7d16f6ec41711acb0ba9611f8acf4014867709d
[/code]