Excel2010 64bit版でVBAを使う時の注意点。 - ナナの毎日頑張るブログ

Excel2010 64bit版でVBAを使う時の注意点。

ここ2週間くらいの間、1つ1つは小さいんですけど、Excel VBAを使った
お仕事が立て続けに入ってきました。

Excelのバージョンは全て2010でした。

ちょっと前までは2003のエクセルも結構あったのですが、最近はすっかり
2007や2010が多くなりましたね。

そのうち2013も出てくるかも?


どのお仕事も、2日間ほどで完了するレベルの規模のお仕事です。

順調にこなしていたのですが、1件だけ、お客さんのパソコンで動かすと
エラーが発生して動かないとの事。


OSとExcelのバージョンをお客さんと同じ環境にして開発しており、特に
問題なく動いているのですが、お客さんのパソコンだと、どうしても動いて
くれないんです。

原因がさっぱり分かりません


悩んでいても仕方ないので、Skypeのデスクトップ共有を利用し、お客さんの
パソコンの画面を見せてもらいました。

まずはエクセルのバージョンを見せてもらったところ、私の環境と違うところを
発見しました

Excelのバージョンは同じなのですが、64bit版としてインストールされている
事でした。

原因はここしかないという事で、Excel VBAについて調べました。

発生しているエラーもバージョンの互換性が~というエラーでしたし。


すると原因らしきものを見つけました。


Declare ステートメントです。

私はExcel VBAを利用する際、Win32APIをシステムコールする場合がよくあるのですが、
その際に「Declare Function~」という感じで書いてます。

マイクロソフトのページによると、「64ビット番のOfficeで実行するときは、すべての
Declare ステートメントに PtrSafe キーワードが含まれている必要があります」と
書かれています。

という事で、

Declare Function ~ Lib "user32" () As Long

Declare PtrSafe Function ~ Lib "user32" () As LongPtr
とする事で、無事にエラーを回避出来ました


PtrSafeはDeclare ステートメントが64bitシステムを対象としていることを示しています。

また、データ型として32bitのLongは、64bitではLongPtrとなります。


他にも64bit版では変更になるデータ型や関数、定数、ステートメントがあるので注意が
必要です。

64bit版としてインストールされているExcelは初めてだったので、今回はいいお勉強に
なりました

やっぱり何事も経験ですね~
関連記事
ここは記事下のフリースペースです
コメント
非公開コメント

承認待ちコメント

このコメントは管理者の承認待ちです

2013-08-05 22:18 | from -

No title

わかりやすい解説ありがとうございます。
64bit Windowsでどうにも動かなくなって困っていました。試してみます。

2015-03-17 19:53 | from にゃんこ | Edit

トラックバック

http://nanaganbaru.blog.fc2.com/tb.php/275-d48e2592