- ベストアンサー
NewはCreateObjectと同じ意味?
- 二つのコードを比較した場合、Dim objIE As New InternetExplorerで宣言すれば、Set objIE = CreateObject("InternetExplorer.application")がなくても、objIE.Visible = Trueをしてみるとブラウザが立ち上がっている。
- NewはCreateObjectと同じ意味と言えるだろう。
- Dim objIE As New InternetExplorerでオブジェクトを生成すると、CreateObject("InternetExplorer.application")が省略され、直接オブジェクトを作成できる。
- みんなの回答 (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 と、宣言とインスタンス生成を分けて使う様にしています。
その他の回答 (1)
- utakataXEX
- ベストアンサー率69% (711/1018)
基本的には同じです。 Newの方をアーリーバインディングと呼びます。 詳細は以下のマイクロソフトのサイトをご確認ください。 [MSDN] 事前バインディングと遅延バインディング (Visual Basic) http://msdn.microsoft.com/ja-jp/library/0tcf61s1.aspx 上記サイトでは、事前バインディング(アーリーバインディング)の利点を中心に述べており、できるだけ New を使うように書かれていますが、遅延バインディング(CreateObject)には「参照設定が不要」と言った利点があります。 また、WSH(VBScript)などでは、そもそも遅延バインディングしかできません。
お礼
回答頂きありがとうございました。
お礼
回答頂きありがとうございました。