燈明ブログ

現状は小池啓仁の応援ブログ

NewキーワードとCreateObject関数でのオブジェクト作成の違い

NEWキーワードとCreateObject関数はともにオブジェクトを生成しますが、違いはなんでしょうか…。


NEWキーワードの時は、生成するオブジェクト(COM)のインターフェイスが変更されると、参照がタイプライブラリ経由なのでAPまで再コンパイルが必要。
CreateObject関数の時は、参照が引数を元にレジストリ経由なので、COMのインターフェイスが変更されても、APの再コンパイルは必要がない。


したがって、CreateObject関数で生成したオブジェクトへの参照を、実行時バインディングにするならば、タイプライブラリの参照設定も必要ない。
なんか、『タイプライブラリの参照設定』『事前/実行時バインディング』が結構絡んできて分かりづらいですが…。


とりあえず、VBからEXCELを制御するときは、事前バインディングでCreateObject関数が定石のようです(MSが推奨、以下のURL参照)。