とある日、知人より「昔のツールをWindows10で動かしたらエラーがでた…」との問い合わせを受けて解決した時のメモです。
32bit用のAPIをWindows10の64bit環境で使うときには少し注意が必要なのです。
同じ現象でお悩みの方はぜひ参考にしてくださいね!
ちょっといじる必要がありますが、Windows10でも基本的に32bit機能は使えます。また、このエラーは簡単に解決できますよ。
クリックできる目次
Windows10で発生したVBAエラーの詳細
今回知人のPCで、次のエラーが発生したようです。
このプロジェクトのコードは、64ビットシステムで使用するために更新する必要があります。Declareステートメントの確認及び更新を行い、次にDeclareステートメントにPtrSafe属性を設定してください。
DeclareステートメントにPtrSafe属性~の原因
ExcelやAccessのVBAからDLL内の関数を使う際に、Declareを使用します。
Windows10などの64bit環境でこの機能を使う場合は、PtrSafe属性を使わなければ、このエラーが発生してしまうのです。
原因の詳細はこちら↓
>>>Office の 32 ビット バージョンと 64 ビット バージョン間の互換性 – Microsoft
DeclareステートメントにPtrSafe属性~の対処法
「Declare」と「Sub/Function」の間に「PtrSafe」を入れてみましょう。
例えば、ファイルを検索する関数「FindFirstFile」でエラーが発生した場合は、次のように「PtrSafe」を入れます。
FindFirstFileの場合は、これだけでエラーが発生しなくなります。
DeclareステートメントにPtrSafe属性~まとめ
今回は、昔から使われているExcelやAccessをWindows10で起動したときに、発生する次のエラーの対応方法について紹介しました!
このプロジェクトのコードは、64ビットシステムで使用するために更新する必要があります。Declareステートメントの確認及び更新を行い、次にDeclareステートメントにPtrSafe属性を設定してください。
このエラーが発生する場合は、「Declare」と「Sub/Function」の間に「PtrSafe」を入れてみてくださいね。
同じ現象でお困りの方の参考になれば幸いです。