Accessがエラーで動かない?!64bit版が原因かもしれません
Accessを新しいパソコンで起動したところ・・・
突然、下記のようなエラーメッセージが出力されAccessが動かなくなりましたか?
コンパイルエラー:
「このプロジェクトのコードは、64 ビット システムで使用するために更新する必要があります。Declare ステートメントの確認および更新を行い、次に Declare ステートメントに PtrSafe 属性を設定してください。」
Accessがエラーで動かないのは、64bit版のOffice(Access)が原因かもしれません。
Office2010、2013、2016、2019で同じエラーとなることを確認しました。
この記事ではエラーの原因・対策方法を解説していきます。
Office(Access)には64bit版と32bit版がある
Officeには、Office2010から「64bit版」と「32bit版」が存在します。
64bit版は新しいもの、32bit版は古いもので
Office2007以前は32bit版しかありませんでした。
Office2010以降のインストーラーには、64bit版と32bit版が同封されています。
間違って、64bit版をインストールしてしまった
Officeのインストーラーを起動すると、
Office2016までは32bit版のインストーラーが自動で起動します。
無意識にインストールを進めると、32bit版が自動的にインストールされるはずです。
しかし、手動でsetup64.exeを起動すると64bit版がインストールされてしまいます。
新しいパソコン(OS)が64bitだから、64bit版のOfficeをインストールしませんでしたか?
64bitパソコンでも、32bit版のOfficeは問題なく動きます。
- setup.exe
+setup64.exe
+setup32.exe
<Office2019の場合>
Office2019の場合は上記のOffice2016までの動きとは逆になります。
64bit版が自動的にインストールされます。
32bit版をインストールしたければ手動でsetup32.exeを起動してください。
#詳しくはマイクロソフト社のサポートサイトをご参照ください。
エラー原因と対策方法
上記エラー原因は、プログラムの書き方が32bit版のOffice向けだからです。
お使いのAccessで「Windows API」という機能を使用しているのですが、
その機能を呼び出すための宣言方法を64bit版にすればエラーは解消されるはずです。
<64bit版の宣言方法>
・Declare PtrSafe Sub・・・
・Declare PtrSafe Function・・・
※Declareの後ろに「PtrSafe」を追加してください。
<32bit版の宣言方法>
・Declare Sub・・・
・Declare Function・・・
まとめ
Windows APIを使う場合、Officeの64bit版と32bit版で宣言の仕方に違いがあります。
上記エラーとなったAccessは、元々32bit版のOffice(Access)で作られたものでしょう。
32bit版で作られたAccessは、Office2010以降も32bit版で動かすことをおススメいたします。
上記エラー以外の不具合を引き起こす可能性もあります。
※Office 2019(最新)にも32bit版はあります。
山梨県在住の女性プログラマー。20代は東京に上京してスキルを磨いてきた。Access以外では.NETシステムに多く携わっている。
⇒お仕事のご依頼はこちら