目次

目次

エクセルでSHAハッシュを使う

鈴木
鈴木
最終更新日2019/01/16 投稿日2019/01/16

Excel上でSHAハッシュを取得する必要があり、SHA(セル名)みたいな形で一括で変換したかったため 使い方 を記述してみました! VBAを使うのは初めてだったため、ユーザー定義関数として使えるようにするまでの手順をまとめました。

VBAマクロをつかう

まずエクセルでVBAのマクロを使うための手順です。 初期設定状態では開発メニューが表示されていないため表示させるようにします。 左上のファイルメニューをクリックすると左側に表示されるサイドメニューの一番下にオブションという項目があります。

01.png

こちらをクリックすると「Excelのオプション」ポップアップメニューが表示されます。

02.png

左メニューの「リボンのユーザー設定」を選択し、「リボンのユーザー設定(B)」項目内の「開発」チェックボックスを選択して、OKを押下します。

03.png

すると開発メニューが表示されるようになります。

モジュールに登録する

セル内で特定のセルを指定して関数を適用するためにはユーザー定義関数に登録する必要があります。 開発メニューを開き、左上のメニュー内で右クリックを押します。

04.png

上図のようなポップアップメニューが表示されますので 「挿入(N)」→「標準モジュール(N)」を選択します。

05.png

新たに表示されたウィンドウに下記のコードをコピーして保存してください。 保存する際には通常のExcelブック(xlsx)ではなくExcelマクロ有効ブック(xlsm)として保存してください。

Function sha(str As String) As String
    Dim objSHA256
    Set objSHA256 = CreateObject("System.Security.Cryptography.SHA256Managed")

    Dim objUTF8
    Set objUTF8 = CreateObject("System.Text.UTF8Encoding")

    Dim bytes() As Byte
    bytes = objUTF8.GetBytes_4(str)

    Dim hash() As Byte
    hash = objSHA256.ComputeHash_2((bytes))

    Dim i
    Dim tmp
    For i = 1 To UBound(hash) + 1
        tmp = tmp & Right("0" & Hex(AscB(MidB(hash, i, 1))), 2)
    Next i

    sha = LCase(tmp)

End Function

詳しく説明しますと、.NET Frameworkに System.Security.Cryptographyライブラリというものがあり、 その中で定義されている関数を利用してハッシュ値を計算しています。 今回はSHA256が必要だったのでSHA256Managedを利用しました。 詳細なドキュメントはこちら

SHA256Managed クラス

利用方法

正常に登録できましたら、Excelの関数として利用できるようになっています。 実際に使ってみます。

06.png

ハッシュ値を表示したいセル内で =SHA(目的のセル) としてEnterキーを押します。 結果、セルの文字列のsha256ハッシュデータが表示されます。

鈴木

和服とvapeとСистемаと醗酵とたまごふわふわとカッティングシェイプスとジャージークラブとjuke/fwkに傾倒する人です

目次