ACCESS 32ビット 64ビット問題

以下引用********************************

Declare→Declare PtrSafe に置換する 更新システムで46箇所エラー出る

Declare ステートメントで PtrSafe を指定しないと、
64 ビット バージョンの Office 2010 と互換性がないものと見なされます。
Microsoft Office 2010 の 32 ビット バージョンと 64 ビット バージョンについてMicrosoft Office 2010 システムには 32 ビット バージョンと 64 ビット バージョンの両方があります。
64 ビット バージョンの方がはるかに大量のデータを処理できます。
Microsoft Excel 2010 で大きな数を処理する場合は、特にこの点が重要になります。新しい 64 ビット バージョンの Microsoft Office 2010 が登場したことに伴って、新バージョンの Microsoft Visual Basic for Applications (VBA) がリリースされています。これは Microsoft Visual Basic for Applications 7.0 (VBA 7) と呼ばれるもので、32 ビットと64 ビットの両方のアプリケーションで動作します。この記事で説明している変更点は、64 ビット バージョンのMicrosoft Office 2010 にのみ適用されることに注意してください。32 ビット バージョンの Office 2010 を使用すれば、以前のバージョンの Microsoft Office で作成したソリューションをそのまま修正せずに使用できます。

この問題を解決するため、LongPtr という真の “ポインター” データ型が新たに VBA に導入されました。
この新しいデータ型を使用すれば、次のように本来の Declare ステートメントを正しく書くことができます。
VBA

Declare PtrSafe Function RegOpenKeyA Lib “advapire32.dll” (ByVal hKey as LongPtr, ByVal lpSubKey As String, phkResult As LongPtr) As Long

このデータ型と新しい PtrSafe 属性を使用すると、この Declare ステートメントを 32 ビット システムでも
64 ビット システムでも使用できます。PtrSafe 属性は、Declare ステートメントの対象を 64 ビット バージョンの
Office 2010 とすることを VBA コンパイラに指示するものです。この属性を指定せずに Declare ステートメントを
64 ビット システムで使用すると、コンパイル時エラーが発生します。
ただし、PtrSafe 属性は、32 ビット バージョンの Office 2010 ではオプションです。
これにより、既存の Declare ステートメントは従来どおりに動作します。