• ベストアンサー

Excelバージョンに対応するリリースNOを知りたい。

こんにちは。 INFO("release")にてExcelバージョンを判断してVBAを分岐処理させたく思っています。 Excel2000 ⇒ 9.0 Excel2002 ⇒ ??? Excel2003 ⇒ 11.0 Excel2000とExcel2003は手元にあるので分かりますが、リリースのNoを知りたく思っています。 多分、Excel2002は10.0かと想像されますが、その他に9.1とか9.2とかあるのでしょうか。 ご存知の方宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 --------------------------------- Excel97  ⇒ 8.0  ←枝番は、"8.0 X,8.0 D"のように文字列で返されます Excel2000 ⇒ 9.0 Excel2002 ⇒ 10.0 Excel2003 ⇒ 11.0 Excel2007 ⇒ 12.0 --------------------------------- 分岐処理は、 If Val(Application.Version) >8 Then とします。枝番がある可能性があるのですが、文字列で返されますので、Val 関数で数値に変えます。なお、Val関数のメモリリークを言う人がいるかもしれませんが、それは、VB5 以下の話です。VBAの現行バージョンでは問題ないはずです。 本来は、If ではなくて、ダイレクティブ #Ifで分岐するのですが、私も実際やってみたら、見事にコケてしまい、コードを全面的に変更しました。マイグレーションのある程度の知識はあったつもりですが、実践が伴っていませんでした。

i_september
質問者

お礼

有難う御座います。 大変に参考になりました。

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

発売時期の相違や修正プログラム適用の有無などで、Excel の バージョン(正確にはマイナーバージョン、リビジョン)が異なり ます。 詳細(マイナーバージョン)を調べたい場合は、Application.Build で調べることができます。Long 型の値を返します。 他には Application.CalculationVersion があります。こちらは、 Excel の「計算エンジンのバージョン」を Long 型で返します。 基本的にバージョン比較は、Application.Version の値を Val 関数 で数値化することで十分な場合がほとんどです。  # Application.Version は String 型(文字列)で返します。  # Excel97 については若干異なります。下記 URL を参照して下さい。   http://support.microsoft.com/kb/232652/en-us

i_september
質問者

お礼

有難う御座います。 参考にさせて頂きます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

Sub test01() MsgBox Application.Version End Sub で示されるものではないですか。

i_september
質問者

お礼

ご回答有り難う御座います。 対応する番号を知りたかったのですが、 参考にさせて頂きます。

関連するQ&A