本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
64bit版 Officeで開いたらVBでエラー
![](https://techlive.tokyo/wp-content/uploads/2021/11/image.png)
このプロジェクトのコードは、64ビットシステムで使用するために更新する必要があります。Declareステートメントの確認および更新を行い、次にDeclareステートメントに PtrSafe 属性を設定してください。
確かに、このプロジェクトを作成した際は32bit版のOfficeで作成してました。抽選Excelです。最近パソコンが不調で再インストールし、64bit版のOfficeに入れ替えたところでした。
![](https://techlive.tokyo/wp-content/uploads/2021/11/image-1.png)
対処方法
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 という文字列を追記するだけで、動くようになりました。とりあえず良かった。
![](https://techlive.tokyo/wp-content/uploads/2021/11/image-2.png)
PtrSafe 対処後32bit版で動く?
気になったのは、利用者は32bit版のOfficeを使っているので、対処した後のExcelファイルは動くの?というところでした。
PtrSafe文字列追記対処し、64bit版で動く事を確認した後
Office2013 Excel 32bit
で動作確認したところ、無事動きました。
まとめ
PtrSafe 関係でエラーが出たときは
Declare PtrSafe と文字列を追記する
対処後32bitでも動く
という事が分かりました。