★ExcelVBA ~ 【電子帳簿保存法・タイムスタンプがらみ】ファイルのハッシュ値をゲットする関数

※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。

参考
紙でもらった請求書はPDF化しないといけないか?→不要。
PDFやExcelなど、電子データでもらった請求書は紙にしていいか?→紙だけじゃダメ。デジタルデータのほうを保管しないといけない。
結局、「全部紙でちょうだい」が「何もしなくていい」となります。
ただし、せっかくもらった紙を「PDF化してしまう」と、
保存要件の対象になってしまうので、紙でもらったものは必ず紙のみで保管する。

======================

以下、本文です。

電子帳簿保存法の「電子データで交付や受取をした取引のデータ保存の義務化」について、猶予期間が、本年、2023年12月31日に終わります。

年明け・2024年1月1日からは、
「電子データで交付や受取をした取引のデータ保存」が「完全義務化」となります。
「紙に印刷して保存Only」が法的に「ダメ・違法」になります。
(※電子データのままの保存がちゃんとしてあれば、追加で紙に印刷することは違法ではない。万が一のために重要書類だけ電子と紙の両方で保管することは違法ではない。管理が大変になるかもしれませんけど。)

もちろん、その対象は「電子データでもらったもの」「だけ」です。
紙でもらった請求書は紙のままでOKです。PDF化する必要はないし、PDF化すると逆に「法律上の保存システム」が必要になってしまうので、むしろPDF化などをしてはいけません。

で、結局どのような方法が義務付けられるのかというと、結論から言うと、
「社内規約さえ作っておけばいい」
です。

基本的には、「もらったデータ(PDF等)を絶対に編集・改ざんしない」という原則にして、そういった、「取り扱いのルール(=社内規約書)」を書いたものを用意して、「日付、取引先、金額」での検索がすぐにできる状態におけば、巷でよく言われている「有料のタイムスタンプ付加」などは不要のようです。
(ただし、それは請求書や見積書などの書類のみ。「電子契約書」などの場合は別。「電子契約書」などの場合はタイムスタンプなどが必須。)

※参考:国税庁HP ~ 問9 電子取引の取引情報に係る電磁的記録の保存等を行う場合には、どのような要件を満たさなければならないのでしょうか。

以下、要件の引用です。↓

電子計算機処理システムの概要を記載した書類の備付け(自社開発のプログラムを使用する場合に限ります。)(規31三イ、5七、81) →★【自社オリジナルシステムの場合のみ、必須。市販ビジネスソフトの場合等は不要。】保存システム(保存機能)の概要・操作方法など
 見読可能装置の備付け等(規31四、81) →★【必須】パソコンなどのPDF等がよめる機器の準備
 検索機能の確保(規31五、5七、81) →★【必須】「日付、金額、取引先」がすぐに検索できる機能の準備。
 次のいずれかの措置を行う(規81) →★【必須】ただ、「いずれか」なので、「4」だけでもOK。

  1. 一 タイムスタンプが付された後の授受
  2. 二 授受後遅滞なくタイムスタンプを付す
  3. 三 データの訂正削除を行った場合にその記録が残るシステム又は訂正削除ができないシステムを利用
  4. 四 訂正削除の防止に関する事務処理規程の備付け

 

上記の表の、一番下の、「四 訂正削除の防止に関する事務処理規程の備付け」が
前述した、
『基本的には、「もらったデータ(PDF等)を絶対に編集・改ざんしない」という原則にして、そういった、「取り扱いのルール(=社内規約書)」』
ということになります。

ただ、そのとき、「絶対に編集させない」ということを「助ける」意味で、「電帳法が言うところのタイムスタンプ」、「ファイルのハッシュ値と更新日付」を記録しておくのは1つの方法だと思います。
もちろん、Acrobat Readerで無料のタイムスタンプを付ける方法もよいかと思います。

参考:Acrobat Readerで無料のタイムスタンプを付けた場合の証拠?のミニ画面
    ↓

ただし、無料のタイムスタンプは、あくまでも、
電子契約書以外の電子データにて、
「四 訂正削除の防止に関する事務処理規程の備付け」、をする場合の、
「単に、より改ざんを予防するためだけの」、
「補完機能」、
としてでしか使ってはいけません。

「Acrobat Readerで無料でタイムスタンプを付ける方法」はタイムサーバーが国税庁が認めないタイプのサーバーの恐れもあるため、電子契約書には使えないかもしれません。だからです。
なので、もし無料のタイムスタンプを付けるなら、アクロバットではなくて、「みんなのタイムスタンプ」みたいなものが良いのかもしれません。

参考:みんなのタイムスタンプ

Acrobat Readerの無料タイムスタンプだと、結局、あとになって、
「このサーバーのタイムスタンプだと、要件を満たしたことにならないので、ここに保存してあるPDFは全部違法です」、
と言われてしまう恐れがあります。ぞっとしますね(^^)

そうならないようにするために、以下のようなことが必要だと思われます。

(01)電子契約書などの有料のタイムスタンプが必要な書類には、
  しっかり有料のタイムスタンプを付ける。
  無料なら、「みんなのタイムスタンプ」のようなサービス?

(02)電子契約書以外の、タイムスタンプが不要な書類には、
  社内規約で対応し、保険(改ざん予防策)として無料のタイムスタンプか、
  後述のような関数を使って、「ファイルのハッシュ値+更新日付」などの記録、
  保管しておくといいと思います。

今回のプログラムは、上記の(02)に使うためのモノです。
(「みんなのタイムスタンプ」のような「Webに自社の書類をアップすること自体が嫌だ、怖い」、と言う場合も、使えるかもしれません。予防策としてだけ。)

では以下、指定したファイルからハッシュ値を取得する関数です。
(日付を付加まではしていませんので、その部分はまた自作する必要があります。)