2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

« Excelの複数バージョンが混在する環境で異なるバージョンのExcelで開く。 | トップページ | Excelでマルチタスク処理 »

2008年1月16日 (水)

Excelの複数バージョンが混在する環境で異なるバージョンのExcelを使う。

CreateObject("Excel.Application")やCreateObject("Excel.Application.??")では、最新バージョンのExcelしか取れません。

そこで、Shell(""""フルパス\EXCEL.EXE"" ""仮のExcelファイル""")などで起動して、GetObject("仮のExcelファイル")で、Workbookオブジェクトを得て、その.ApplicationからExcel.Applicationオブジェクトを得ることができます。

あるいは、Shell(""""フルパス\EXCEL.EXE""")などで起動して、n=1で、GetObject("Book" & n)で、Workbookオブジェクトを得て、その.ApplicationからExcel.Applicationオブジェクトを得て、そのバージョンを調べて、違っていたら、nを+1して、繰り返します。

ここで、もし、ROT(Running Object Table)を使えば、もっとスマートにできます。でも、ROTを使うのは.NETでないと、ちょっと難しいかも。

あるいは、レジストリの
HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}\LocalServer32
を書き換えてから、CreateObject("Excel.Application")します。

レジストリの書き換えは、各バージョンの
"フルパス\EXCEL.EXE" /regserver
でもできます。

環境がないので、アイデアだけで試してません。:-p

« Excelの複数バージョンが混在する環境で異なるバージョンのExcelで開く。 | トップページ | Excelでマルチタスク処理 »