Windows10でVBA(32bit)実行エラー「DeclareステートメントにPtrSafe属性~」対処法

2 min
DeclareステートメントにPtrSafe属性

とある日、知人より「昔のツールをWindows10で動かしたらエラーがでた…」との問い合わせを受けて解決した時のメモです。

32bit用のAPIをWindows10の64bit環境で使うときには少し注意が必要なのです。

同じ現象でお悩みの方はぜひ参考にしてくださいね!

 

知人
32bit機能使えないの?

 

ちょっといじる必要がありますが、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」を入れてみましょう。

Declare PtrSafe Sub/Function

 

例えば、ファイルを検索する関数「FindFirstFile」でエラーが発生した場合は、次のように「PtrSafe」を入れます。

Private Declare PtrSafe Function FindFirstFile …

FindFirstFileの場合は、これだけでエラーが発生しなくなります。

 

知人
エラーが消えた(感動

 

DeclareステートメントにPtrSafe属性~まとめ

今回は、昔から使われているExcelやAccessをWindows10で起動したときに、発生する次のエラーの対応方法について紹介しました!

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

このエラーが発生する場合は、「Declare」と「Sub/Function」の間に「PtrSafe」を入れてみてくださいね。

Declare PtrSafe Sub/Function

同じ現象でお困りの方の参考になれば幸いです。

SEパパ

SEパパ

外資系IT企業SE職で2児の父ちゃん!職業柄かリサーチ&問題解決が好き。幅広いジャンルで「お悩み解決」記事を執筆中。月間最高24万PV。雑誌掲載。

読者様に役立つ情報提供を心がけています。

カテゴリー:
関連記事

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA