VBA で CopyMemory を使用してデータの保存とメモリーマップファイルからのデータ取得を行う方法
VBAでCopyMemoryを使ってメモリマップドファイルのデータを取得および格納する方法を確認するには、次の手順を実行します。
- まず、VBAコード上でCopyMemory関数を宣言する必要があります。以下のコードをコードモジュールに追加してください。
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
ByVal Destination As LongPtr, _
ByVal Source As LongPtr, _
ByVal Length As LongPtr)
- 続いて、メモリマッピングファイルをオープンする必要があります。以下のコードサンプルを使用して、メモリマッピングファイルをオープンできます。
Dim hFileMap As LongPtr
hFileMap = OpenFileMapping(FILE_MAP_READ, False, "MyMemoryMapName")
ご注意ください、「MyMemoryMapName」を、あなた自身のメモリマップファイル名に変更する必要があることを。
- MapViewOfFile
Dim lpFileMapBuf As LongPtr
lpFileMapBuf = MapViewOfFile(hFileMap, FILE_MAP_READ, 0, 0, 0)
- 今、CopyMemory 関数を用いて、メモリーマップ・ファイルからデータをあなたの変数にコピーできます。次がコード例です。
Dim myValue As Long
CopyMemory myValue, lpFileMapBuf, Len(myValue)
myValue 変数の型は、メモリマップド ファイルに格納されているデータ型と一致する必要があることに注意してください。
- 最後に、メモリマップファイルの終了とマッピング解除を行います。以下にサンプルコードを示します。
UnmapViewOfFile lpFileMapBuf
CloseHandle hFileMap
上述の操作が完了したらCopyMemory関数を使用してデータのメモリマップドファイルへの保存やメモリマップドファイルからの取得が可能になります。