Access64bit 対応策

32bit版DLLを使用したAccess VBAを変換して64bit環境でも動くように修正

32bit用外部API宣言部分のソースを64bit環境で動作する形に変換

関数の宣言に「PtrSafe」を付ける

Declare Function GetWindowsDirectory Lib “kernel32” Alias “GetWindowsDirectoryA” _
(ByVal lpBuffer As String, ByVal nSize As Long) As Long
Declare PtrSafe Function GetWindowsDirectory Lib “kernel32” Alias “GetWindowsDirectoryA” _
(ByVal lpBuffer As String, ByVal nSize As Long) As LongPtr

64bit版での動作用に条件分岐して定義する(必要な場合)

#IF
Declare Function GetWindowsDirectory Lib “kernel32” Alias “GetWindowsDirectoryA” _
(ByVal lpBuffer As String, ByVal nSize As Long) As Long
#ELSE
Declare PtrSafe Function GetWindowsDirectory Lib “kernel32” Alias “GetWindowsDirectoryA” _
(ByVal lpBuffer As String, ByVal nSize As Long) As LongPtr
#END IF

Long型で参照型パラメータとなっている部分をLongPtrに変更する

宣言セクション修正後 デバッグすると、呼び出し側パラメーターを修正する必要のある個所がエラーで表示されるので
Long型で参照型パラメータとなっている部分をLongPtrに変更

コメント

タイトルとURLをコピーしました