VBAのIE(InternetExplorer)制御でIEの読み込み状態を示すBusyプロパティについて解説しています。
<< エクセルVBAのInternetExplorerオブジェクトのApplicationプロパティ :前の記事
こちらでは、エクセルVBAで利用するInternetExplorerオブジェクトのBusyプロパティについて解説しています。
プロパティとはオブジェクトの属性を指します。属性とは、そのオブジェクトの情報そのものです。プロパティはその値を取得したり、設定することもできます。プロパティを利用するにはオブジェクト名とプロパティ名の間に「.(ピリオド)」で結んで記述します。
オブジェクト名.プロパティ名
また、プロパティを設定する場合は以下のように「=(イコール)」を記述し設定値を代入します。
オブジェクト名.プロパティ名 = 設定値
InternetExplorerオブジェクトのBusyプロパティはWebページが読み込み中かどうかを示します。「True」は読み込み中で「False」は読み込み完了を表しますが、実際の処理ではTrue→False→True→Falseを繰り返すことがあります。
例えばframeタグやiframeタグを利用しているサイトの場合、最初のフレームの読み込みが完了すると一旦Falseを返しますが、次のフレームの読み込みを開始するとTrueに戻ります。
他にもJavaScriptなどのスクリプト処理でも同様のことが起こる場合がありますので、BusyプロパティだけではWebページの読み込み完了待機処理を補えないことを理解してください。
また、Busyプロパティは読み取り専用のプロパティになります。
objIE.Busy = True/False
Set オブジェクト変数 = InternetExplorerオブジェクト.Busy
| 構文 | object.Busy | |
|---|---|---|
| データ型(戻り値) | ブール型(Boolean) | |
| 引数 | 省略 | 説明 |
| object | × | IEオブジェクトを指定します。 |
| 戻り値 | 説明 | |
| True | Webページの読み込み中を示します。 | |
| False | Webページの読み込み完了を示します。 | |
こちらのVBAコードは、Webページの完全読込待機処理をするマクロです。
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制御」サイトのトップページが表示されます。

Sub sample()
Dim objIE As InternetExplorer
※ドラッグ(スワイプ)すると全体を確認できます。
こちらはSubステートメントに引数の設定がないsampleプロシージャになります。 まずは、変数宣言でメモリ領域を割り当てるDimステートメントを利用してオブジェクト変数objIEに「InternetExplorer型」を変数宣言しています。
これによりInternetExplorerオブジェクトを作成した際にプロパティやメソッドを利用できるようになりました。
'IE(InternetExplorer)のオブジェクトを作成する
Set objIE = CreateObject("InternetExplorer.Busy")
※ドラッグ(スワイプ)すると全体を確認できます。
次にオブジェクトを参照するSetステートメントとオブジェクトを作成するCreateObject関数を利用してInternetExplorerのオブジェクトを作成します。
'IE(InternetExplorer)を表示する
objIE.Visible = True
※ドラッグ(スワイプ)すると全体を確認できます。
こちらでは、InternetExplorerオブジェクトのVisibleプロパティに「True」が設定されています。VisibleプロパティはIE(InternetExplorer)の表示・非表示の設定になりますので、「True」を設定するとIE(InternetExplorer)が表示されます。
'指定したURLのページを表示する
objIE.navigate "http://www.vba-ie.net/"
※ドラッグ(スワイプ)すると全体を確認できます。
こちらは指定したURLをIE(InternetExplorer)で表示するInternetExplorerオブジェクトのNavigateメソッドの設定です。第一引数は表示させるWebページのURLの設定になりますので「http://www.vba-ie.net/」を設定すると「VBAのIE制御」サイトのトップページが表示されます。
'完全にページが表示されるまで待機する
Do While objIE.Busy = True Or objIE.ReadyState <> 4
DoEvents
Loop
End Sub※ドラッグ(スワイプ)すると全体を確認できます。
こちらは、Do~Loop ステートメントを利用して、ページが完全に読み込まれるまでループさせる処理を行っています。それぞれのプロパティでWebページが完全に読み込まれた場合の戻り値は、Busyプロパティが「False」、ReadyStateプロパティが「4」になりますので、たとえBusyプロパティで「False」になったとしてもReadyStateプロパティが「4」でない場合はループから抜け出すことはできません。
こちらを抜け出すためには、BusyプロパティとReadyStateプロパティの両方が完全に読み込み完了状態になった場合のみとなります。こちらの処理について「http://www.vba-ie.net/ie/navigate.html」で詳しく解説していますので、確認してください。
最後はEndステートメントを利用してsampleプロシージャを終了させます。
| プロパティ名 | 内容 |
|---|---|
| AddressBar | アドレスバーを表示・非表示させます。 |
| Application | アプリケーションオートメーションオブジェクトにアクセス可能であれば、そのオートメーションオブジェクトを返す。 |
| Busy | Webページが読み込み中かどうかを示す。 |
| Container | コンテナ/親へのオブジェクト参照を取得します。 |
| Document | 指定したドキュメントを返します。 |
| FullName | InternetExplorerアプリケーションのファイルパスを返します。 |
| FullScreen | ウィンドウを最大化し、ステータスバー、ツールバー、メニューバー、およびタイトルバーを非表示にします。 |
| Height | InternetExplorerウィンドウの高さ(ピンクセル)を設定します。 |
| HWND | 指定したInternetExplorerのHWNDを返します。 |
| Left | InternetExplorerウィンドウの水平位置(ピクセル)を設定します。 |
| LocationName | 指定したページのタイトルを取得します。 |
| LocationURL | 指定したページのURLを取得します。 |
| MenuBar | メニューバーを表示・非表示させます。 |
| Name(規定プロパティ) | アプリケーションの名前を返します。 |
| Offline | InternetExplorerのオフライン/オンラインを切り替えます。(オフラインの場合は、キャッシュから読み込む) |
| Parent | コンテナ/親が存在する場合は、そのオートメーションオブジェクトのオートメーションオブジェクトを返します。 |
| Path | InternetExplorerアプリケーションのフォルダパスを返します。 |
| ReadyState | IEオブジェクトのドキュメントの読み込み状態を示します。 |
| RegisterAsBrowser | OCが(ターゲットの名前解決のための)トップレベルのブラウザとして登録します。 |
| RegisterAsDropTarget | OCは、ナビゲーションのためのドロップターゲットとして登録します |
| Resizable | ウィンドウサイズ変更の可否を設定します。 |
| Silent | 任意のダイアログボックスを表示することかどうかを設定する。 |
| StatusBar | ステータスバーを表示・非表示させます。 |
| StatusText | ステータスバーのテキストを取得します。 |
| TheaterMode | InternetExplorerのシアターモードを設定します。 |
| ToolBar | ツールバーが表示されているのを制御します。 |
| Top | InternetExplorerウィンドウの垂直位置(ピクセル)を設定します。 |
| TopLevelContainer | 指定したオブジェクトがトップレベルのオブジェクトである場合にTrueを返します。 |
| Type | 含まれているドキュメントオブジェクトの型を返します。 |
| Visible | アプリケーションの表示・非表示を設定します。 |
| Width | InternetExplorerウィンドウの幅(ピンクセル)を設定します。 |
| メソッド名 | 内容 |
|---|---|
| ClientToWindow | ウィンドウ·サイズにクライアントのサイズを変換します。 |
| ExecWB | のIOleCommandTarget :: Execの |
| GetProperty | オブジェクトのコンテキスト内のプロパティvtValueための関連する値を取得します。 |
| GoBack | 履歴リスト内の前の項目に移動します。 |
| GoForward | 履歴リスト内の次の項目に移動します。 |
| GoHome | 家に帰る/ページを開始します。 |
| GoSearch | 検索ページに移動します。 |
| Navigate | URLまたはファイルに移動します。 |
| Navigate2 | URLまたはファイルまたはPIDLに移動します。 |
| PutProperty | オブジェクトのコンテキストで名前szPropertyに関連付けますvtValue。 |
| QueryStatusWB | |
| Quit | アプリケーションを終了し、開いているドキュメントを閉じます。 |
| Refresh | 現在閲覧ページを更新します。 |
| Refresh2 | 現在閲覧ページを更新します。 |
| ShowBrowserBar | のClsidにBrowserBarを設定 |
| Stop | ファイルを開く停止します。 |
次の記事: エクセルVBAのInternetExplorerオブジェクトのContainerプロパティ >>
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
VBAのIE制御についてのQ&A掲示板↑VBAのIE操作で分からない事があればこちらの掲示板よりご質問ください。
ExcelのVBA初心者入門↑こちらはVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります。
こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。
こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。
こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。