• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:NewはCreateObjectと同じ意味?)

NewはCreateObjectと同じ意味?

このQ&Aのポイント
  • 二つのコードを比較した場合、Dim objIE As New InternetExplorerで宣言すれば、Set objIE = CreateObject("InternetExplorer.application")がなくても、objIE.Visible = Trueをしてみるとブラウザが立ち上がっている。
  • NewはCreateObjectと同じ意味と言えるだろう。
  • Dim objIE As New InternetExplorerでオブジェクトを生成すると、CreateObject("InternetExplorer.application")が省略され、直接オブジェクトを作成できる。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

参考になりそうなサイトを見つけましたが、難しいです。 http://www.itmedia.co.jp/help/howto/win/win2000/0007special/complus_vb/chap2/05.html http://www.itmedia.co.jp/help/howto/win/win2000/0007special/complus_vb/chap2/08.html >Newキーワードでオブジェクトを実体化するときには,Visual Basicの参照設定によって取り込まれたクラスIDがSCMに渡される。 >CreateObject関数でオブジェクトを実体化するときには,参照設定によって得たクラスIDは使われない。代わりに,CreateObject関数の引数で指定された名前が使われる。 まあ、折角参照設定したら、Newを使うのが本筋の様にも読み取れますが、功罪がありそうで、後者のページのOnePointのところをご覧下さい。 ただ、当方一度酷い目にあった(バグ発見に苦労させられた)経験から、 Dim objIE As InternetExplorer Set objIE = New InternetExplorer と、宣言とインスタンス生成を分けて使う様にしています。

OKLVLEHCQRQ
質問者

お礼

回答頂きありがとうございました。

その他の回答 (1)

  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.1

基本的には同じです。 Newの方をアーリーバインディングと呼びます。 詳細は以下のマイクロソフトのサイトをご確認ください。 [MSDN] 事前バインディングと遅延バインディング (Visual Basic) http://msdn.microsoft.com/ja-jp/library/0tcf61s1.aspx 上記サイトでは、事前バインディング(アーリーバインディング)の利点を中心に述べており、できるだけ New を使うように書かれていますが、遅延バインディング(CreateObject)には「参照設定が不要」と言った利点があります。 また、WSH(VBScript)などでは、そもそも遅延バインディングしかできません。

OKLVLEHCQRQ
質問者

お礼

回答頂きありがとうございました。