VBAのIE(InternetExplorer)制御で利用したCreateObject関数を解説しています。
CreateObject関数は、外部アプリケーションをオブジェクトとして操作できる関数でIE(InternetExplorer)を操作するために欠かせないIE(InternetExplorer)オブジェクトを生成する関数でもあります。
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 |
CreateObject関数を利用して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ブラウザがページを完全に表示するまで処理をループさせています。これにより、完全にページを読み込むまで次の処理へ進めないようにしています。
CreateObject関数を利用して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全般について分からない事があればこちらの掲示板よりご質問ください。
VBAのIE操作入門↑ExcelのVBAをマスターできたら、エクセルVBAのIE操作にも挑戦してみてください。
こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。