CreateObject関数
CreateObject関数は、外部アプリケーションをオブジェクトとして操作できる関数でIE(InternetExplorer)を操作するために欠かせないIE(InternetExplorer)オブジェクトを生成する関数でもあります。
CreateObject関数を利用する際の注意点もありますので、そちらも解説しています。
目次
CreateObject関数とは
CreateObject関数はオートメーション機能を利用して一時的なオブジェクトを作成する関数です。この関数を利用すると、外部アプリケーションをオブジェクトとして操作することが可能となります。
「InternetExplorer制御の準備(ライブラリ追加)」でIE操作には「参照設定」からライブラリを追加しなければいけないという説明をしましたが、細かい話をするとCreateObject関数を利用すれば「参照設定」しなくてもオブジェクトを操作することができます。
ただし、「実行効率が落ちること」と「入力補完機能」が使えないというデメリットがあるので、必ず「参照設定」を行いましょう。
Set オブジェクト変数名 = CreateObject("アプリケーション・クラス名")
構文 | CreateObject(class,[servername]) | |
---|---|---|
引数 | 省略 | 説明 |
class | × | 引数classには、作成するオブジェクトのクラスとアプリケーションの名前を「appname.objecttype」の形式で指定します。 appname・・・オブジェクトを提供しているアプリケーションの名前を指定。 objecttype・・・作成するオブジェクトの種類またはクラスを指定。 尚、内部処理形式が文字型 (String) のバリアント型 (Variant) の値を指定します。 |
代表的なアプリケーションとクラス名 | InternetExplorer.Application・・・Internetエクスプローラー Excel.Application・・・Excel Word.Application・・・Word Access.Application・・・Access PowerPoint.Application・・・PowerPoint | |
servername | ● | ローカルマシンで使用する場合は空の文字列 ("") を指定し、ネットワークで利用する場合はネットワークサーバー名を指定します。 尚、内部処理形式が文字型 (String) のバリアント型 (Variant) の値を指定します。 |
戻り値 | オブジェクト型(Object) |
オートメーションに対応しているアプリケーションでは、少なくとも1種類のオブジェクトが提供されています。たとえば、ワードプロセッサの場合、アプリケーション (Application)オブジェクト、文書(Document)オブジェクト、ツールバー(Toolbar)オブジェクトなどが提供されます。
ActiveXオブジェクトを作成するには、CreateObject関数の戻り値をオブジェクト変数に代入します。一度オブジェクトが作成されると、定義したオブジェクト変数を使って、コード中のオブジェクトを参照できますので、作成したオブジェクトのプロパティおよびメソッドを操作することができます。
ActiveXオブジェクトとは、オートメーション インターフェイスを介して、他のアプリケーションまたはプログラミング ツールに公開されるオブジェクトのことです。
Call MySub (CreateObject("Excel.Application"))
また、上記のようにCreateObject関数から返ったオブジェクトを引数としてオブジェクトが必要な関数に渡すこともできます。こちらの例では、Excel.Applicationオブジェクトへの参照を作成して引き渡しています。
代表的なアプリケーションのクラス名 | ||
---|---|---|
アプリケーション名 | オブジェクトの種類 | クラス名 |
Excel | Application | Excel.Application |
WorkBook | Excel.WorkBook | |
Excel.Chart | ||
Excel.Sheet | ||
Access | Application | Access.Application |
CurrentData | Access.CodeData | |
Access.CurrentData | ||
CurrentProject | Access.CodeProject | |
Access.CurrentProject | ||
Word | Application | Word.Application |
Document | Word.Document | |
Grobal | Word.Grobal | |
PowerPoint | Application | PowerPoint.Application |
Outlook | Application | Outlook.Application |
IE(InternetExplorer)オブジェクトを作成
CreateObject関数を利用してIE(InternetExplorer)オブジェクトを作成します。
IE(InternetExplorer)オブジェクト作成のサンプルコード
こちらのサンプルコードはIE(InternetExplorer)オブジェクト作成し、「VBAのIE制御」サイトのトップページを表示させるマクロになります。
Sub sample()
Dim objIE As InternetExplorer
'IE(InternetExplorer)のオブジェクトを作成する
Set objIE = CreateObject("InternetExplorer.Application")
'IE(InternetExplorer)を表示する
objIE.Visible = True
'指定したURLのページを表示する
objIE.Navigate "http://www.vba-ie.net/"
'完全にページが表示されるまで待機する
Do While objIE.Busy = True Or objIE.ReadyState <> 4
DoEvents
Loop
End Sub
実行結果
「VBAのIE制御」サイトのトップページが表示されます。
解説
Dim objIE As InternetExplorer
変数objIEをInternetExplorer型で宣言します。
'IE(InternetExplorer)のオブジェクトを作成する
Set objIE = CreateObject("InternetExplorer.Application")
CreateObject関数を利用してIEのオブジェクトを作成します。オブジェクト作成によりプロパティやメソッドを利用することができます。
'IE(InternetExplorer)を表示する
objIE.Visible = True
VisibleプロパティにTrueを設定することで、ブラウザを表示させます。
'指定したURLのページを表示する
objIE.Navigate "http://www.vba-ie.net/"
Navigateメソッドの第一引数に「http://www.vba-ie.net/」を設定しています。これにより「VBAのIE制御」サイトのトップページが表示されます。
'完全にページが表示されるまで待機する
Do While objIE.Busy = True Or objIE.ReadyState <> 4
DoEvents
Loop
こちらは、Webブラウザがページを完全に表示するまで処理をループさせています。これにより、完全にページを読み込むまで次の処理へ進めないようにしています。
Excelオブジェクトを作成
CreateObject関数を利用してExcelオブジェクトを作成します。
Excelオブジェクト作成のサンプルコード
こちらのサンプルコードはExcelオブジェクト作成し、セルにデータを代入するマクロになります。
Sub sample()
Dim objExcel As Excel.Application
'Excelオブジェクトを作成する
Set objExcel = CreateObject("Excel.Application")
'Excelオブジェクトを表示する
objExcel.Visible = True
'ワークブックを追加
objExcel.Workbooks.Add
objExcel.Range("A1") = "新規作成したワークブックに書き込まれます。"
Range("A1") = "処理を実行しているワークブックに書き込まれます。"
End Sub
実行結果
新しく作成されたワークブックに「新規作成したワークブックに書き込まれます。」が代入されます。
処理を実行している既存のワークブックに「処理を実行しているワークブックに書き込まれます。」が代入されます。
解説
それでは、コードを1つずつ説明していきます。
Dim objIE As Excel.Application
変数objExcelをExcel.Application型で宣言します。
'Excelオブジェクトを作成する
Set objExcel = CreateObject("Excel.Application")
CreateObject関数を利用してExcelのオブジェクトを作成します。オブジェクト作成によりプロパティやメソッドを利用することができます。
'Excelオブジェクトを表示する
objExcel.Visible = True
VisibleプロパティにTrueを設定することで、エクセルを表示させます。
'ワークブックを追加
objExcel.Workbooks.Add
Addメソッドでワークブックを新規作成しています。
objExcel.Range("A1") = "新規作成したワークブックに書き込まれます。"
Range("A1") = "処理を実行しているワークブックに書き込まれます。"
最初の処理は、新しく作成されたワークブックに「新規作成したワークブックに書き込まれます。」が代入され、次の処理は、処理を実行している既存のワークブックに「処理を実行しているワークブックに書き込まれます。」が代入されます。
これにより別々のオブジェクトであるということが分かるかと思います。
利用されているコンテンツ
CreateObject関数は、IE(InternetExplorer)を操作する上で必ず利用されるものです。ほとんどのコンテンツで利用されていますので、ここでは代表的なコンテンツを紹介します。