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の迷宮か