64ビット版Accessへの移行でVBAが動かない!API宣言の書き換えと注意点
会社で新しいパソコンに買い替えたとき、これまで使っていたAccessを開くと「コンパイルエラー」が出て動かなくなってしまった……。 そんなトラブルが今、多くの現場で増えています。
その原因の多くは、Accessの「32ビット版」から「64ビット版」への移行に伴うものです。 特に、Windowsの深い機能(API)を呼び出しているような少し高度なシステムほど、この問題に直面します。 今回は、プログラミングに詳しくない方でも、何が起きているのか、どう対処すべきかが分かるように解説します。
【チェックポイント】あなたのAccessはどっち?
Accessの「ファイル」メニューから「アカウント」→「Accessのバージョン情報」を開いてみてください。 そこに「32ビット」または「64ビット」と記載されています。 新旧のPCでここが異なっていると、プログラムの書き換えが必要になります。
なぜ64ビットになると動かなくなるのか
簡単に言うと、32ビットと64ビットでは、データの「通り道の幅」が異なります。 古いAccess(32ビット)で作られたプログラムは、狭い道を通ることを前提に書かれているため、広い道(64ビット)に来ると、どこを通ればいいか迷ってエラーを出してしまうのです。
特に影響を受けるのが「API宣言」と呼ばれる、Windowsの機能(例えばファイルを開く画面を表示するなど)を借りてくるための命令文です。 この命令文を「64ビットでも通れる書き方」に直してあげる必要があります。
具体的な対処法:PtrSafeキーワードの追加
エラーが出ているプログラムのコードを覗いてみると、「Declare Function...」で始まる行があるはずです。 ここを修正するのが解決への第一歩です。
【解決策】「PtrSafe」という魔法の言葉を付け加える
プログラム内の「Declare」という単語の直後に「PtrSafe」という言葉を書き足します。 例:Declare PtrSafe Function... これだけで、「このプログラムは64ビットでも安全(PtrSafe)に動かせます」という宣言になり、エラーが解消されるケースが多くあります。
変数の型も「太い道」に合わせる必要がある
言葉を足すだけでなく、一部の「型(データの器)」の名前を変える必要がある場合もあります。 「Long」という型を使っていた部分を「LongPtr」に変えるといった作業です。
これは、住所の番地を書き留めるメモ帳を、より大きな数字が書けるものに取り替えるようなイメージです。 少し専門的になりますが、エラーが出ている箇所を一つずつ丁寧に見ていくことで、再び正常に動くようになります。
自分たちで直すか、プロに任せるかの判断基準
「PtrSafe」を足すだけで動けば幸いですが、システム全体が複雑な場合、一箇所を直しても次々に別のエラーが出てくることがあります。 特に以下のような場合は、無理をせずプロに診断を依頼することをお勧めします。
- エラー箇所が多すぎて、どこを直せばいいか収拾がつかない
- 修正しても、一部のボタンや機能が反応しないままになっている
- そもそもプログラムのコード画面を見るのが不安だ
PCの進化に合わせてシステムをアップデートするのは、大切な「メンテナンス」の一環です。 32ビット版のAccessはいずれ姿を消していく運命にあるため、今のうちに64ビット環境へ完全対応させておくことは、今後10年使い続けるための先行投資になります。
新しい環境で、より快適な運用を
PCを新しくしたのに、古いソフトのせいで仕事が止まってしまうのは非常にもったいないことです。 一見難しそうに見える「64ビット対応」も、原因が分かれば必ず解決できます。
最新のPCは処理能力が格段に向上しているため、正しく書き換えられたAccessは、以前よりもずっとキビキビと動くようになるはずです。 トラブルを機に、今のシステムをより安全で長持ちするものへとリフレッシュさせていきましょう。 もしお困りであれば、現状のファイルがどのような状態か、一度専門家に相談してみることから始めてみてください。


