Microsoft Excel2010の32ビット版と64ビット版について


Microsoft Office2010には、32ビット版と64ビット版の2種類があります。
OfficeにはWord、ExcelAccessPowerpointOutlook・・・と多種ありますが、
今回はExcelについて書きます。

32ビット版は、歴代バージョンから互換があり、32ビット系OS、64ビット系OS問わず、稼働します。
64ビット版は、64ビット系OS(Vista,7,2008の64ビット用)でしか現在は動作しないようです。

64ビット版は、動作するOSの違いだけで、32ビット版と完全互換(プラットフォームの違いはアプリが吸収して互換を保つ)があると思っている人が多いと思いますが、互換性は高くないようです。

マイクロソフトのホームページを見ると
・64 ビットでは、使用できる仮想メモリと物理メモリの容量が増える
・32 ビット版のアドインとも互換性がある
Windows-32-on-Windows-64 (WOW64) というx86エミュレータを使用して、64 ビット版の Windows OS上で実行される 32ビット版の2010 アプリケーションをサポートしている
・既存のActiveXコントロールコンポーネントオブジェクトモデル (COM) アドイン、VBAの使用ができる
等、最初の方には良い事ばかり書いてあり、最後まで読まないと、はまることになりそうです。

http://technet.microsoft.com/ja-jp/library/ee681792.aspx


デメリットのところに
Visual Basic for Applications (VBA) Declare ステートメントを使用してWindowsアプリケーション プログラミング インターフェイス(API) またはその他の DLL エントリ ポイントにアクセスするVBAコードは、
32ビット版と 64ビット版で異なります。APIへの入力および出力を確認して更新した後で、DeclareステートメントにPtrSafe属性を追加して更新する必要があります。Declare ステートメントは、PtrSafe 属性がないと64ビット版のVBAで動作しません。
と載っていました。

VBAで、「comdlg32.dll」等32ビットAPIを使用して作成してきたものは、64ビット版で動かないということです。
PtrSafe属性を追加すると64ビット版でも動作します。32ビット版のExcel2010でも問題なく動作します。
そのブックをExcel2007で開くと、コンパイルエラーになり動作しなくなります。
2010以降は良いかもしれませんが、2007とは互換が無くなりました。(同じ拡張子なのに)

Excel2003がメインだったり、64ビットOSマシンも無い事もあり、今までは32ビット、64ビットを気にせずにVBA等で開発してきましたが、
気をつけていきたいと思います。
Excel2007、2010、32ビット/64ビットに関係なく動作するアプリが一番汎用性があると思います。

今回は独り言でした。

【株式会社 エム・システム】
本      社  :〒124-0023 東京都葛飾東新小岩8-5-5 5F
           TEL : 03-5671-2360 / FAX : 03-5671-2361
盛岡事業所  :〒020-0022 岩手県盛岡市大通3-2-8 3F
           TEL : 019-656-1530 / FAX : 019-656-1531
E-mail    : n_shimoda@msystm.co.jp 
URL     : http://msystm.co.jp/
ブログ       : http://d.hatena.ne.jp/msystem/ 
Facebook   : http://www.facebook.com/msysteminc