CreateObjectとは?

このQ&Aのポイント
  • CreateObjectは、オブジェクトやインスタンスを作成するメソッドであり、主にIEの操作やシステム情報の取得などに使用されます。
  • CreateObjectを使用すると、指定したプログラムやコンポーネントを実行できます。例えば、CreateObject("InternetExplorer.application")を使用すると、IEを操作することができます。
  • ただし、CreateObject("Wscript.NetWork").ComputerNameの場合は、オブジェクトやインスタンスを作成しているわけではなく、単なるプロパティの値を取得しているだけです。
回答を見る
  • ベストアンサー

CreateObjectとはどういう意味なのでしょ

CreateObjectとはどういう意味なのでしょうか? よく、IEを立ち上げたい時に Set ObjIE = CreateObject("InternetExplorer.application") を使ってましたが、 Debug.Print CreateObject("Wscript.NetWork").ComputerName でコンピューター名を取得できる事を知りました。 CreateObjectは、オブジェクトやインスタンスを作成するものだと思っていたのですが、 CreateObject("Wscript.NetWork").ComputerNameは、 オブジェクトやインスタンスを作成してないですよね? なので混乱しています。 あと、CreateObjectは関数なのでしょうか?メソッドなのでしょうか?

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

> CreateObject("Wscript.NetWork").ComputerNameは、 > オブジェクトやインスタンスを作成してないですよね? 作成してますよ。 CreateObject("Wscript.NetWork") で作成したオブジェクトに対して .ComputerName を使っています。 Set ObjNET= CreateObject("Wscript.NetWork") ObjNET.ComputerName を一度にやったような感じです。

BLKEIYIL
質問者

お礼

Set ObjNET= CreateObject("Wscript.NetWork") ObjNET.ComputerName を一度にやったような感じです。 この表現は実にわかりやすいです。

その他の回答 (1)

  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.1

>オブジェクトやインスタンスを作成してないですよね? WshNetWorkオブジェクトのインスタンスを作成していますよ。 メソッドのことをメンバ関数というのはご存じですか。 (ちなみにComputerNameはメンバ変数です) CreateObjectは関数でもあろうと、メソッドであろうと働きは同じです。 使われ方によって関数と言われる時もあれば、メソッドとよばれる時があるだけです。 一度クラス設計の簡単なプログラムを経験してみると一皮むけることでしょう。

BLKEIYIL
質問者

お礼

CreateObject("Wscript.NetWork").ComputerName でもインスタンスを作成してたのですね。気付きませんでした。 >メソッドのことをメンバ関数というのはご存じですか 知りませんでした。勉強します。 >CreateObjectは関数でもあろうと、メソッドであろうと働きは同じです。 使われ方によって関数と言われる時もあれば、メソッドとよばれる時があるだけです。 為になる情報、ありがとうございます。

関連するQ&A

  • NewはCreateObjectと同じ意味?

    Sub test01() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True End Sub Sub test02() Dim objIE As New InternetExplorer objIE.Visible = True End Sub この二つのコードを比較した場合、 Dim objIE As New InternetExplorer で宣言すれば、 Set objIE = CreateObject("InternetExplorer.application") がなくても、 objIE.Visible = True をしてみるとブラウザが立ち上がっているのですが、 これは NewはCreateObjectと同じ意味という事でしょうか?

  • 現在表示されているURLを取得したいのですが

    Sub test1() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.goo.ne.jp/" Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop Debug.Print objIE.Navigate Set objIE = Nothing End Sub //////////////////////////////////////////////// をやろうとすると、 Debug.Print objIE.Navigate の部分で、「引数は省略できません。」とエラーになります。 どう修正すればいいか教えてください。 ("http://www.goo.ne.jp/"はダミーです)

  • IEではなくファイアフォックスを指定することは

    VBAでブラウザを開く場合、 IEではなくファイアフォックスを指定することは可能ですか? 既定のブラウザはIEにしています。 Sub test1() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "http://www.ocn.ne.jp/" objIE.Visible = True Set objIE = Nothing End Sub の Set objIE = CreateObject("InternetExplorer.Application") の部分を Set objIE = CreateObject("firefox.exe") に変えてみたら、 【ActiveX コンポーネントはオブジェクトを作成できません。(Error 429)】 になりました。

  • excel2010でのCreateObject

    OS:Windows7Pro Office:オフィス2010 Excel2007で作成したメール一括送信プログラムがExcel2010でエラーが発生します。 CreateObject メソッドを使用して Outlook Application オブジェクトを作成する際に 「実行時エラー'429' ActiveXコンポーネントはオブジェクトを作成できません。」 と表示されます。デバッグ画面では Dim myOLApp As Object Dim myDATA As MailItem '### OUTLOOKのオブジェクトを作成後、メールを新規作成する。 Set myOLApp = CreateObject("Outlook.Application")   Set myDATA = myOLApp.CreateItem(olMailItem) の Set myOLApp = CreateObject("Outlook.Application")  この部分でエラーになっています。 VB6.0SP6ランタイムのインストールをしましたが状況は変化しません。 Excel2007では正常に動作します。 どこを修正すればよいのでしょう? ご教授いただけると幸いです。宜しくお願いいたします。

  • vbでCreateObjectの使い方で困っています。Internet

    vbでCreateObjectの使い方で困っています。InternetExploreを呼び出すときに引数(-extoff)をつけて起動したいのですが、どうしても付け方がわかりません。ご存知の方、ぜひ教えてください。お願い致します。 Set objIE = CreateObject("InternetExplorer.Application") で呼び出しています。規定のプログラムの改造なのでほかの手段が使えません。

  • VBスクリプトでIEの404 not foundエラーを検出する

    VBScriptを使って、あるページを自動保存しようとしています。 set objIE = WScript.CreateObject("InternetExplorer.Application")でオブジェクトを作成して、無条件に1 to 10のループをまわして i & ".html"を取得しています。 そこで、objIE.Navigate(i & ".html") でページが存在する場合は保存、ページが存在しない(404 not found)場合は無視(ループを抜ける)。 としたいのですが、このエラーを拾う方法を教えてください。 よろしくお願いします。

  • MSXML2で、サイトのタイトルを取得したい

    アクセスvbaです。 InternetExplorerの方法だと、 **************************************************** Sub Sample1() Dim ObjIE As InternetExplorer Set ObjIE = CreateObject("InternetExplorer.Application") ObjIE.Navigate "http://www.yahoo.co.jp/" ObjIE.Visible = True Do While ObjIE.Busy = True DoEvents Loop Do While ObjIE.Document.ReadyState <> "complete" DoEvents Loop Debug.Print ObjIE.Document.Title Debug.Print ObjIE.LocationName ' 同じ ObjIE.Quit Set ObjIE = Nothing End Sub **************************************************** で、該当のサイトのタイトルを取得できるのですが、 これではなく、 **************************************************** Sub Sample2() Dim objMSXML2 As Object Dim myObj As Object Dim myAll As Variant Set objMSXML2 = CreateObject("MSXML2.XMLHTTP") objMSXML2.Open "GET", "http://www.yahoo.co.jp/", False objMSXML2.Send myAll = objMSXML2.responseText 'ソースを抜き出す ’タイトル取得 Set objMSXML2 = Nothing End Sub **************************************************** の方法で、サイトのタイトルを取得したいのですが、 可能でしょうか? コードをご教授ください。よろしくお願いします。

  • WSH createobjectで指定出来るアプリケーション

    CreateObjectで指定できるアプリケーションの指定方法について質問致します。 WSHでExcelオブジェクトを生成する場合、  set objxls = wscript.createobject("Excel.Application") や  set objxls = wscript.createobject(<対象exeのパス> などで指定しますが、 初めの表記で指定できるアプリケーション名はどうやって調べれば よいでしょうか? インストールしているアプリのオブジェクトを 初めの表記方法を使って生成したいと考えております。 よろしくお願い致します。

  • DoEventsは意味ない?

    Sub test() Dim ObjIE As InternetExplorer Set ObjIE = CreateObject("InternetExplorer.Application") ObjIE.Navigate "http://www.yahoo.co.jp/" ObjIE.Visible = True Do While ObjIE.Busy = True DoEvents Loop Debug.Print ObjIE.LocationName Set ObjIE = Nothing End Sub ------------------------------------- を実行した所、イミディエイトウインドウに何も表示されないので ObjIE.LocationNameを ObjIE.Refreshに変えてみたところ、 ------------ 実行時エラー ‘-2147467259 オートメーションエラーです。エラーを特定できません。 ------------ となりました。 ステップインでゆっくり実行するとできたことから、 ObjIE.Refresh にたどり着くまでに、IEにサイトが表示されてないのが原因のようです。 と言いう事は、 ------------ Do While ObjIE.Busy = True DoEvents Loop ------------ のコードは全く持って無意味なのでしょうか? 「表示するまで待つ」と言う意味だと思っていたのですが 表示し終わる前に次のコードに進んでしまっているようです。

  • Shell.ApplicationでのIEオブジェ

    目的のタブページのオブジェクトを取得することに成功したのですが、質問があります。 コードはVBSで書いています。 Dim objIE Set Shell=Wscript.CreateObject("Shell.Application") for each tmp in Shell.Windows if TypeName(tmp.document)="HTMLDocument" then'HTMLDocumentかつ if tmp.document.title="Google" then'そのページのタイトルが「Google」なら set objIE=tmp'代入 end if end if Next if objIE="" then WScript.Echo("目的のページが表示されてないっぽいです") WScript.Quit end if 'この時点で、objIEがその目的のページでのオブジェクト ここで、 objIE.alert("hoge")とできないのはどうしてなのでしょうか? alertはjavascriptの関数?だからですか?? でも、objIE.document.write("hoge")で、documentオブジェクトが使えるのはどうしてなんですか? documentオブジェクトはjavascirptのオブジェクトじゃないんですか? それともう1つ、上記コードの場合ですが、JSの場合 Shell.Windows.item(0)というので参照?できるっぽいですが、itemというメソッドはjavascirptだけのものなのでしょうか?vbsでは使えないのですか?何故なんですか?同じcomオブジェクトを参照してるんじゃないんですか?(?) どのオブジェクトがどれで、どのメソッドがどれなのかわからなくなります。 あと1つだけ! 上記コードでの、tmp.documentとはなんなのでしょうか?HTMLDocumentとは・・w 頭が混乱してます。どなたか回答よろしくお願いいたします。

専門家に質問してみよう