いつもお世話になっております。
現在VB6.0のActiveX DLLからExcelファイルを作成するプログラム設計を考えていますが、作成するExcelのバージョンが2000,2002,2003とで挙動が異なるのではないかと懸念しています。
そこで、自端末にインストールされているExcelのバージョンを取得する方法をご教授して頂けないでしょうか。
Excel.ApplicationオブジェクトのVersionプロパティとか。
たとえば、Excel2000なら
?CreateObject("Excel.Application").Version
9.0
もげさんご回答ありがとうございます。
ただ、9.0というのはタイプライブラリーのバージョンですよね。
office自体のバージョンを取得することはできないのでしょうか。
また、追記としまして作成したExcelでマクロを作成したいと考えているのですが、2003で作成したマクロを2002で開いた場合問題ないのでしょうか。
#タイプライブラリーは2002と2003は同じだと認識しております
>9.0というのはタイプライブラリーのバージョンですよね。
ExcelVBAのヘルプでVersion プロパティの項を参照ください
「Excelのバージョン」をかえすとあります。
>#タイプライブラリーは2002と2003は同じだと認識しております
実際にお試しください。
Office2003 の次は Office12 ですからね。
http://pc.watch.impress.co.jp/docs/2005/0914/ms.htm
Office 2003 は 11 を返しますし。
... と、このあたりでピンときてほしいところですが。
> Excel.ApplicationオブジェクトのVersionプロパティとか。
ついでに、Application.Build も。
> Office 2003 は 11 を返しますし。
いえ。11 ではなく、"11.0" です。
Version プロパティの戻り値が『文字列』である事に注意してください。
(数値だけが返されるとは限りません)
たとえば Excel 97 では、以下のような値を返します。
http://support.microsoft.com/kb/232652/en-us
なお、複数のバージョンの Excel が同居していた場合、
CreateObject で起動される Excel は特定できないようです。
どうやら、下記のようにバージョンつきで指定しても、
Set X = CreateObject("Excel.Application.11")
そのバージョンの Excel が起動するとは限らないようで…。
# 複数バージョンの混在環境では、CreateObjce で起動されるのが、
# 下位バージョンのExcelになるか、上位バージョンのそれになるのかは、
# インストール順などに左右されるようです。
これも参考にどうぞ
KB213602にバージョンの判定方法、その他のKBにバージョン間の相違に対応する方法やGetObjectの問題の対策が出ています。
皆様。
貴重なご意見ありがとうございました。
上記を参考にさせて頂きます。
ツイート | ![]() |