VBA内のバイナリファイルを簡単に読み込む方法は簡単ですが、2GB(2,147,483,647バイト - Longデータ型の最大値)の制限があります。テクノロジーが進化するにつれて、この2GBの制限は容易に破られます。オペレーティングシステムインストールDVDディスクのISOイメージなど)。マイクロソフトでは、低レベルのWindows APIを使用してこれを克服する方法を提供しています。ここではそのバックアップです。
また、Microsoftからfciv.exe
ような外部プログラムなしでファイルハッシュを計算するための(一部を読む)ことを実演してください。
メソッド名 | 説明 |
---|---|
IsOpen | ファイルが開いているかどうかを示すブール値を返します。 |
OpenFile ( 文字列としてのsFileNam ) | sFileName引数で指定されたファイルを開きます。 |
CloseFile | 現在開いているファイルを閉じます。 |
ReadBytes ( ByteCount As Long) | ByteCountバイトを読み取り、Variantバイト配列で返し、ポインタを移動します。 |
WriteBytes (ByteとしてのDataBytes() ) | バイト配列の内容をファイルの現在の位置に書き込み、ポインタを移動します。 |
流す | Windowsに強制的に書き込みキャッシュをフラッシュさせます。 |
SeekAbsolute ( HighPos As Long、 LowPos As Long) | ファイルポインタをファイルの先頭から指定された位置に移動します。 VBAはDWORDSを符号付きの値として扱いますが、APIはそれらを符号なしとして扱います。高次の引数をゼロ以外の値にして4GBを超えるようにします。下位DWORDは2GB〜4GBの間で負の値になります。 |
SeekRelative ( オフセットは長く) | ファイルポインタを現在の場所から+/- 2GBまで移動します。 64ビット符号付きオフセットを2つの32ビット値に変換することにより、このメソッドを2 GBを超えるオフセットに使用できるように書き直すことができます。 |
プロパティ | 説明 |
---|---|
FileHandle | 現在開いているファイルのファイルハンドル。これはVBAファイルハンドルと互換性がありません。 |
ファイル名 | 現在開いているファイルの名前。 |
オートフラッシュ | WriteBytesが自動的にFlushメソッドを呼び出すかどうかを設定/示します。 |
関数 | ノート |
---|---|
GetFileHash ( sFileは文字列、 uBlockSizeは Double、 sHashTypeは文字列) | HashTypeMD5 、 HashTypeSHA1 、 HashTypeSHA256 、 HashTypeSHA384 、 HashTypeSHA512のいずれかのプライベート定数の1つである、使用するハッシュのタイプ(バイト数)、使用するブロックサイズ 、ハッシュする完全パスを投げるだけです 。これは可能な限り一般的になるように設計されています。 |
それに応じてuFileSize As Doubleのコメントを解除する必要があります。私はMD5とSHA1をテストしました。