【解決】このプロジェクトのコードは、64ビットシステムで使用するために更新する必要があります。

64bit版 Officeで開いたらVBでエラー

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

確かに、このプロジェクトを作成した際は32bit版のOfficeで作成してました。抽選Excelです。最近パソコンが不調で再インストールし、64bit版のOfficeに入れ替えたところでした。

対処方法

Microsoft 公式ページによると、

このプロジェクト内のコードは、64 ビットシステムで使用できるように更新する必要があります。 Declare ステートメントを確認して、更新し、それらに PtrSafe 属性のマークを付けます。

64 ビット バージョンのアプリケーションで実行する場合は、すべての Declare ステートメントに PtrSafe キーワードを含める必要Microsoft Office。 PtrSafe キーワードは、 Declare ステートメントが、Microsoft Office の 64 ビット バージョンで実行しても安全であることを示します。

だそうです。

Private Declare Sub Sleep Lib “kernel32” (ByVal ms As Long)

この宣言の Declare のところに、 PtrSafe属性がついてないよってことですね。

Private Declare PtrSafe Sub Sleep Lib “kernel32” (ByVal ms As Long)

Declareの後ろにPtrSafe という文字列を追記するだけで、動くようになりました。とりあえず良かった。

PtrSafe 対処後32bit版で動く?

気になったのは、利用者は32bit版のOfficeを使っているので、対処した後のExcelファイルは動くの?というところでした。

PtrSafe文字列追記対処し、64bit版で動く事を確認した後

Office2013 Excel 32bit

で動作確認したところ、無事動きました。

まとめ

PtrSafe 関係でエラーが出たときは

Declare PtrSafe と文字列を追記する

対処後32bitでも動く

という事が分かりました。