Excelバージョン取得について

解決


テスト  2005-11-02 21:36:25  No: 127248

いつもお世話になっております。

現在VB6.0のActiveX DLLからExcelファイルを作成するプログラム設計を考えていますが、作成するExcelのバージョンが2000,2002,2003とで挙動が異なるのではないかと懸念しています。
そこで、自端末にインストールされているExcelのバージョンを取得する方法をご教授して頂けないでしょうか。


もげ  2005-11-02 21:47:15  No: 127249

Excel.ApplicationオブジェクトのVersionプロパティとか。

たとえば、Excel2000なら
?CreateObject("Excel.Application").Version
9.0


テスト  2005-11-02 22:01:13  No: 127250

もげさんご回答ありがとうございます。
ただ、9.0というのはタイプライブラリーのバージョンですよね。
office自体のバージョンを取得することはできないのでしょうか。

また、追記としまして作成したExcelでマクロを作成したいと考えているのですが、2003で作成したマクロを2002で開いた場合問題ないのでしょうか。
#タイプライブラリーは2002と2003は同じだと認識しております


もげ  2005-11-02 22:15:18  No: 127251

>9.0というのはタイプライブラリーのバージョンですよね。
ExcelVBAのヘルプでVersion プロパティの項を参照ください
「Excelのバージョン」をかえすとあります。

>#タイプライブラリーは2002と2003は同じだと認識しております

実際にお試しください。


Blue  2005-11-02 22:26:04  No: 127252

Office2003 の次は Office12 ですからね。
http://pc.watch.impress.co.jp/docs/2005/0914/ms.htm


じゃんぬねっと  URL  2005-11-02 22:29:42  No: 127253

Office 2003 は 11 を返しますし。
... と、このあたりでピンときてほしいところですが。


魔界の仮面弁士  2005-11-02 23:54:00  No: 127254

> 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になるか、上位バージョンのそれになるのかは、
# インストール順などに左右されるようです。


ひろ  2005-11-02 23:57:59  No: 127255

これも参考にどうぞ

http://www.google.co.jp/search?hl=ja&safe=active&c2coff=1&q=site%3Asupport.microsoft.com+Excel+GetObject+CreateObject&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

KB213602にバージョンの判定方法、その他のKBにバージョン間の相違に対応する方法やGetObjectの問題の対策が出ています。


テスト  2005-11-03 06:27:41  No: 127256

皆様。
貴重なご意見ありがとうございました。
上記を参考にさせて頂きます。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加