CreateObject(“Excel.Application”)のサーチ手順 Excel.Applicationと.16の違い

VB.NETまたはVB6でCreateObjectの操作手順をサーチしてみた

1.CreateObject(“Excel.Application”を受け取る
2.HKEY_CLASSES_ROOT\Excel.Applicationを探しに行く
 そこに記載されているCLSID {000245—-}をサーチ
3.HKEY_CLASSES_ROOT\WOW6432NodeのCLSIDの{000245—-}をサーチ
 Localserver32に記載されているexcel.exeを起動
 (officeが32ビット版の場合)
 
WIN10,office2016(32ビット)版環境では
HKEY_CLASSES_ROOT\Excel.Application
HKEY_CLASSES_ROOT\Excel.Application.16
が記載されている
両方ともCLSIDはおなじ{000245….
4.office201664ビットなら CLSID {000245—-}のLocalServer32 に
excel.exeのパスがかかれている

動きとしては、

32ビット版はWOW6432NOTEのCLSID内のLocalServer32に
64ビット版はCLSID {000245—-}のLocalServer32に
アプリの位置を記載しているようである。

結論
64ビット版の記載は
2019 ,2016 Excel.Application.16
2013 Excel.Application. 15
2010 Excel.Application. 14
2007 Excel.Application. 12
2003 Excel.Application. 11
2002 Excel.Application. 10
32ビット版は
Excel.Application
で大丈夫 ところが32ビット版でも上記の記載でcreateobject可能なので
汎用性も持たせるのならofficeのバージョンを判断して、上記で記載すれは
よさげである

なおCreateObject(“Excel.application”)とCreateObject(“Excel.Appllicatop.16”)の違いは同じCLSIDを見に行くだけなのに不思議MSの迷宮か