Access 32ビット版と64ビット版について
よく混同されがちなのですが、OSの32ビット、64ビットとOffice製品の32ビット、64ビットは異なります。Windows 11に32ビット版はありませんが、Windows 11にOffice 2021の32ビット版はインストールすることができます。逆に、古い32ビット版OSに64ビット版Officeはインストールできません。
最新のOfficeをインストールしようとすると、通常64ビット版となります。プレインストールマシンにも64ビット版のOfficeがインストールされていることがほとんどです。
では、32ビット版Accessで作成されたMDBイル、ACCDBファイルを64ビット版Accessで使用することができるか、というと、実装されている機能により、エラーが出て使えないこともあります。
32ビット版Accessと64ビット版で互換性のないパターン
1.アドインやVBAコードの互換性
32ビット版用に書かれたVBAコードやアドインが64ビット版で動作しない場合があります。特に、API呼び出しや外部ライブラリを使用している場合には注意が必要です。API呼び出しに関しては、64ビット版に適応させるために、宣言部分を変更する必要があります。
2.ActiveXコントロール
32ビット版のAccessで使用されている一部のActiveXコントロールが64ビット版では動作しないことがあります。ActiveXコントロールの例として、カレンダーコントロールやバーコードコントロールがあります。
3.参照設定
参照しているライブラリが64ビット版でも利用可能であるか確認が必要です。特に、外部DLLやOCXファイルに依存している場合、そのファイルが64ビット環境に対応しているかどうかを確認する必要があります。
4.ODBCリンクテーブル
32ビット版のODBC設定と、64ビット版のODBC設定は別のODBCツールを使って設定する必要があります。
API呼び出しでエラーが出る際の修正の一例
API呼び出しが32ビット版/64ビット版に対応していない場合の修正の例を見てみましょう。
具体的には、VBAコードのAPI宣言部分にPtrSafeキーワードとLongPtr型を使用します。
例:
#If VBA7 Then
' 64ビット版
Private Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long
#Else
' 32ビット版
Private Declare Function GetTickCount Lib "kernel32" () As Long
#End If
使用されているAPI宣言によって対応内容が異なるため、APIを多数使用しているファイルの対応では多大な時間を使って、調整とテストが必要になることがあります。
このような場合は弊社のような、Accessバージョンアップを得意としているベンダーに依頼されることも是非ご検討ください。