Excel上でSHAハッシュを取得する必要があり、SHA(セル名)みたいな形で一括で変換したかったため 使い方 を記述してみました!
VBAを使うのは初めてだったため、ユーザー定義関数として使えるようにするまでの手順をまとめました。
VBAマクロをつかう
まずエクセルでVBAのマクロを使うための手順です。
初期設定状態では開発メニューが表示されていないため表示させるようにします。
左上のファイルメニューをクリックすると左側に表示されるサイドメニューの一番下にオブションという項目があります。
こちらをクリックすると「Excelのオプション」ポップアップメニューが表示されます。
左メニューの「リボンのユーザー設定」を選択し、「リボンのユーザー設定(B)」項目内の「開発」チェックボックスを選択して、OKを押下します。
すると開発メニューが表示されるようになります。
モジュールに登録する
セル内で特定のセルを指定して関数を適用するためにはユーザー定義関数に登録する必要があります。
開発メニューを開き、左上のメニュー内で右クリックを押します。
上図のようなポップアップメニューが表示されますので
「挿入(N)」→「標準モジュール(N)」を選択します。
新たに表示されたウィンドウに下記のコードをコピーして保存してください。
保存する際には通常の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を利用しました。
詳細なドキュメントはこちら
利用方法
正常に登録できましたら、Excelの関数として利用できるようになっています。
実際に使ってみます。
ハッシュ値を表示したいセル内で
=SHA(目的のセル)
としてEnterキーを押します。
結果、セルの文字列のsha256ハッシュデータが表示されます。
この記事を書いた人
- 和服とvapeとСистемаと醗酵とたまごふわふわとカッティングシェイプスとジャージークラブとjuke/fwkに傾倒する人です
最近書いた記事
- 2019.10.17ES2019で追加されたあれこれを使ってみる
- 2019.09.20JavaScript で安全に扱える最大整数
- 2019.07.24Gitでハッシュ値指定が重複したらどうなるのか
- 2019.07.09ハッシュは何に使えるのか