ACCESS VBA 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の操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。