64ビット版のExcel VBAは、Win32のAPI宣言でエラーになります。従来の32ビットアーキテクチャと、64ビットアーキテクチャの違いについては、専門の書籍などを見てもらうとして、要するに、今まで問題のなかったマクロがエラーになるということです。
勘違いしないでくださいね。 新しいExcel 2010すべての話ではありません。 64ビット版Excelに限った現象です。 32ビット版のExcelでは、何も問題ありません。
ちょっと正確な情報ではないのでナニですが、エラーになるAPIもある、と聞きました。てことは、エラーにならないAPIもあるのでしょうか。まさか、すべてのAPIをテストするわけにはいきませんが、私がよく使うAPIでは、ことごとくエラーになりました。
キリがないので、このへんにしておきます。
さて、では64ビット版VBAでWin32APIをコールするには、どうしたらいいのでしょう。それには、エラーを告げるダイアログボックスに書かれているように、PtrSafeというキーワードを使います。
PtrSafeキーワードは、32ビット版のExcel 2010や、Excel 2007のAPI宣言で使用していても問題ありません。同じ宣言とコードを実行した結果です。
【32ビット版のExcel 2010】
【Excel 2007】
あれ?なんか、64ビット版の方が遅いぞ・・・(^^;
これはこれで、別の機会に調査してみます。