ACCESS VBA 64ビット対応にDeclareステートメントを修正する

64ビット対応にDeclareステートメントを修正する

他人からもらったACCESSのファイルや、新しいパソコンでACCESSファイルを起動したときに以下のメッセージが出ることがあります。

このプロジェクトのコードは、64 ビット システムで使用するために更新する必要があります。Declare ステートメントの確認および更新を行い、次に Declare ステートメントに PtrSafe 属性を設定してください。

これは32ビットで作成されたACCESSファイルを64ビットのACCESS環境で起動した際に発生するエラーです。
今回は、こちらのエラーの解決方法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。

解決方法

先に解決方法からご紹介します。

これは、メッセージにある通り、DeclareステートメントにPtrSafe属性を設定すれば解決します。
VBAのコード中にDeclareという表現があるはずですので、Declareの後ろにPtrSafeを付けていくのです。


 Declare
 

から


 Declare PtrSafe
 

へ置き換えます。

このメッセージが出た後に、「OK」を押すと、Visual Basic Editor(VBE)の画面が起動すると思います。
そこで、置換を使ってDeclareをDeclare PtrSafeに一括変換しましょう。

ここで注意するのは、左側のトグルボタンの選択を「カレントプロジェクト」にすることです。
カレントプロジェクトは、ACCESSのファイルで使用しているすべてのVBAのモジュールを指します。

デフォルトですと「カレントモジュール」が選択されているのですが、これだと現在開いているモジュールしか置換されませんので不十分です。
ここに注意して置換すれば、上記のエラーが回避できるはずです。

エラーの原因

では、このエラーの原因を説明します。
これは、Windowsの32Bit、64Bitの違いによって起こるものです。

Windowsには32bitと64bitが存在します。
新しいパソコンですと64bitのものが多くなっていますが、古いパソコンでは32bitが使われていたりします。

ACCESSのファイルを32bit環境で作成していた場合、64bit環境にファイルを移行するとこのエラーが発生します。
このエラーも必ず発生するものではなく、32bit環境でACCESS VBAからWindows API(Windowsで準備している標準機能)を呼び出す処理を使っている場合に発生するものです。

以上、64ビット対応にDeclareステートメントを修正する方法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス紹介

最後までお読みいただき、ありがとうございました。