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オブジェクトへの参照を作成して引き渡しています。

代表的なアプリケーションのクラス名
アプリケーション名オブジェクトの種類 クラス名
ExcelApplicationExcel.Application
WorkBookExcel.WorkBook
Excel.Chart
Excel.Sheet
AccessApplicationAccess.Application
CurrentDataAccess.CodeData
Access.CurrentData
CurrentProjectAccess.CodeProject
Access.CurrentProject
WordApplicationWord.Application
DocumentWord.Document
GrobalWord.Grobal
PowerPointApplicationPowerPoint.Application
OutlookApplicationOutlook.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制御」サイトのトップページが表示されます。

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)を操作する上で必ず利用されるものです。ほとんどのコンテンツで利用されていますので、ここでは代表的なコンテンツを紹介します。

ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください^^

VBAのInternetExplorer操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE(InternetExplorer)操作にも挑戦してみてください^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

エクセルVBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。