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ビット版の方が遅いぞ・・・(^^;
これはこれで、別の機会に調査してみます。

0 件のコメント:

コメントを投稿