前提
accessのvbaについて質問します。
ある特定の文字列をハッシュ化しようとハッシュ関数を調べていたのですが、インポートなどが必要なようで思っているハッシュ関数が見つかりませんでした。
phpのようなハッシュ関数はaccessには存在しないのでしょうか。不要なインポートはできる限り避けたいです。
実現したいこと
文字列のハッシュ化
オートメーションエラー
該当のソースコード
vba
1Option Compare Database 2 3Private Sub コマンド0_Click() 4 Dim test As String 5 6 test = sha("a") 7 Debug.Print test 8End Sub 9 10 11Function sha(str As String) As String 12 Dim objSHA256 13 Set objSHA256 = CreateObject("System.Security.Cryptography.SHA256Managed") 14 15 Dim objUTF8 16 Set objUTF8 = CreateObject("System.Text.UTF8Encoding") 17 18 Dim bytes() As Byte 19 bytes = objUTF8.GetBytes_4(str) 20 21 Dim hash() As Byte 22 hash = objSHA256.ComputeHash_2((bytes)) 23 24 Dim i 25 Dim tmp 26 For i = 1 To UBound(hash) + 1 27 tmp = tmp & Right("0" & Hex(AscB(MidB(hash, i, 1))), 2) 28 Next i 29 30 sha = LCase(tmp) 31 32End Function
試したこと
以下のurlのソースコードを用いて動かしたら上記のようなエラーが出てきました。
https://techblog.recochoku.jp/5991
> インポートなどが必要
参照設定なら分かりますけど、「インポート」ってなんですか?
https://www.taru-net.jp/download/md5/
https://onl.tw/pu9uT2w
インポートと言う言い方であっているかは分かりませんが、上記の2つのurlのように、外部からのデータを使いシステムを動かすことを自分ではインポートと呼んでいます。
上記は、外部のデータをダウンロードしたり、ライブラリをインストールしたりしますので、このようなやり方を使わないハッシュ関数みたいなお手軽なものを探しています。
リンク先では、「ダウンロード」と言われているのはサンプルプログラムだし、参照しているライブラリは標準なので、インストールは不要なはずです。
>メモリーが足りなく、又処理の多さの問題だと思いますので自分のパソコンの問題だと思います。
>自分は上記のやり方でできないと諦め、別の方法を探しています。
>https://www.sejuku.net/blog/75643
仮に本当にメモリ不足、PCのスペック不足だとした場合、
ハッシュ値を計算することそのものが重たい処理(メモリを多く消費する処理)であるため、
別の方法があったとしても、そのPCでは厳しいのではないかと思います。
PCのメモリを比較的消費しない方法となると、
ハッシュ値を作成できるWEBAPIを自身のPC以外に構築して
そのWEBAPIをaccessから利用するということが考えられます。
これは外部サービスを使うことになるのでダメなんですかね。

回答3件
あなたの回答
tips
プレビュー