64ビット版VBAでのAPI宣言


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ビット版の方が遅いぞ・・・(^^;

これはこれで、別の機会に調査してみます。