InternetExplorerの基本的な操作

Webページの表示

URLを指定してWebページを表示するには、navigateメソッドを使用します。

ただし、navigateメソッドはページの読み込み完了を待ちませんので、 後述する読み込み完了待ちの処理をいれないと、読み込み途中のまま次の処理が行われてしまいます。

実装方法

指定したURLをInternetExplorerで表示します。
objIE.Navigate("WebページのURL")

navigateメソッドには引数が複数あり、
・POSTデータを送信したりヘッダーを指定して送信する
新しいタブで表示する
を行うことができます。

サンプル

						objIE.Navigate("https://web.biz-prog.net/") '開きたいURL
					
						objIE.Navigate("https://web.biz-prog.net/");   //開きたいURL
					
						objIE.Navigate "https://web.biz-prog.net/" '開きたいURL
					

参考


読み込み待ち

navigateメソッドでWebページを表示したり、リンクのクリックを行ったり、Submitを行った場合などは、ページの読み込み・表示が終わるまでの待機する処理が必要です。
以下の処理によりページの表示が終わるまで待機できます。

実装方法

このサンプルは、ページを開いたりリンクをクリックした時の、ページの読み込みが発生する操作後に呼び出すことで、読み込みが終わるまで待機できます。

InternetExplorerが読み込み中かの判定は、InternetExplorerオブジェクトのBusyプロパティとReadyStateプロパティをチェックします。
Busyプロパティはページの読み込みがビジー(処理中)の場合にtrueになります。
ReadyStateプロパティは現在のドキュメントの読み込み状態が取得できます。Completeになれば読み込み完了です。

While文により、IEの状態がビジーでなく、かつ読み込み状態が完了待ちでなくなるまで、ループを続けます。
DoEnventsは、ループ中にプログラムが操作できないことを避ける命令です(CPU時間を他に割り当てます)。
無限ループを防ぎたい場合はタイムアウトの処理を追加してください。

サンプル

							Public Function OpenWebWait() As Boolean

								Try
									'読み込み完了まで待つ
									Do While (objIE.Busy OrElse _
										objIE.ReadyState <> SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE)

										'無処理
										System.Windows.Forms.Application.DoEvents()
										System.Threading.Thread.Sleep(100)
									Loop

									Return True

								Catch ex As Exception
									Return False
								End Try

							End Function
						
							public bool OpenWebWait()
							{
								try
								{
									//読み込み完了まで待つ
									while (objIE.Busy || objIE.ReadyState != SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE)
									{
										//無処理
										System.Windows.Forms.Application.DoEvents();
										System.Threading.Thread.Sleep(100);
									}

									return true;
								}
								catch (Exception ex)
								{
									return false;
								}
							}
						
						Public Function OpenWebWait() As Boolean

							Try
								'2秒間ほど待機
								System.Threading.Thread.Sleep(2000)

								'読み込み完了まで待つ
								Do While (WebBrowser1.IsBusy OrElse _
									WebBrowser1.ReadyState <> WebBrowserReadyState.Complete)

									'無処理
									System.Windows.Forms.Application.DoEvents()
									System.Threading.Thread.Sleep(100)
								Loop

								Return True

							Catch ex As Exception
								Return False
							End Try

						End Function
						

指定した時間が経過したら読み込み待ちを中断したい場合、以下のように改造しましょう
						Dim timeout As Date = Now.AddMinutes(30)	'30秒でタイムアウト
						Dim flgStop As Boolean						'停止フラグ。画面でボタン押下時にこのフラグをTrueにすれば止まる
						Do While (・・・)
							・・・
							If Now > timeout OrElse flgStop Then
								objIE.Stop()
								Exit Do
							End If
						Loop
					

戻る/進む/ホームページ/検索

閲覧履歴の「戻る」「進む」を行ったり、現在のユーザーのホームページや検索ページに移動します。
これら操作でもページの読み込みが発生しますので、メソッド実行後に、読み込み完了を待つ処理が必要です。(上記参照)

実装方法

サンプル

						objIE.GoBack()	'戻る
						objIE.GoForward()	'進む
						objIE.GoHome()	'ホームページに移動
						objIE.GoSearch()	'既定の検索ページに移動
					
						objIE.GoBack();     //戻る
						objIE.GoForward();  //進む
						objIE.GoHome();     //ホームページに移動
						objIE.GoSearch();   //既定の検索ページに移動
					
						objIE.GoBack	'戻る
						objIE.GoForward	'進む
						objIE.GoHome	'ホームページに移動
						objIE.GoSearch	'既定の検索ページに移動
					

中止/リロード

読み込みを中止したり、サイトのリロード(再読み込み)が行えます。
リロードを行った場合はサイトの読み込みが発生しますので、メソッド実行後には読み込み完了を待つ処理が必要です。

実装方法

サンプル

						objIE.Stop()	'読み込み中止
						objIE.Refresh()	'再読み込み
					
						objIE.Stop();       //読み込み中止
						objIE.Refresh();    //再読み込み
					
						objIE.Stop	'読み込み中止
						objIE.Refresh	'再読み込み
					

タイトル/URLの取得

現在表示しているサイトのタイトルとURLを取得します。

実装方法

サンプル

						MsgBox(objIE.Document.Title)	'タイトルを表示する
						MsgBox(objIE.Document.Url)		'URLを表示する
					
						MessageBox.Show(objIE.Document.Title);  //タイトルを表示する
						MessageBox.Show(objIE.Document.Url);    //URLを表示する
					
						MsgBox(objIE.Document.Title)	'タイトルを表示する
						MsgBox(objIE.Document.Url)		'URLを表示する
					

InternetExplorerの表示/非表示

起動しているInternetExplorerの表示/非表示を設定します。

InternetExplorerのVisibleプロパティにTrueを設定するとIEが表示されます。
FalseにするとInternetExplorerの画面が消えますが、見えないだけで実際は動作しており、DOM操作を行えます。

プログラムでInternetExplorerを起動時はFalseになっているので、まずはTrueに設定しないと何も見えないので注意です。

実装方法

サンプル

						objIE.Visible = True 	'IEが見えるようになる
						objIE.Visible = False 	'IEが見えなくなる
					
						objIE.Visible = true;   //IEが見えるようになる
						objIE.Visible = false;  //IEが見えなくなる
					
						objIE.Visible = True 	'IEが見えるようになる
						objIE.Visible = False 	'IEが見えなくなる
					

InternetExplorerの位置/サイズ

起動しているIEの位置・サイズを設定/参照します。

実装方法

サンプル

						Debug.WriteLine(objIE.Top)		'X座標
						Debug.WriteLine(objIE.Left)		'Y座標
						Debug.WriteLine(objIE.Width)	'幅
						Debug.WriteLine(objIE.Height)	'高さ
					
						Console.WriteLine(objIE.Top);     //X座標
						Console.WriteLine(objIE.Left);    //Y座標
						Console.WriteLine(objIE.Width);   //幅
						Console.WriteLine(objIE.Height);  //高さ
					
						Debug.Print objIE.Top		'X座標
						Debug.Print objIE.Left		'Y座標
						Debug.Print objIE.Width		'幅
						Debug.Print objIE.Height	'高さ
					

InternetExplorerのバー操作

  • Statusbar:ステータスバーの表示有無を設定/参照します。
  • StatusText:ステータスバーに表示するテキストを設定/参照します。
  • Toolbar:ツールバーの表示有無を設定/参照します。
  • AddressBar:アドレスバーの表示有無を設定/参照します。

実装方法

サンプル

						objIE.AddressBar = False    	'アドレスバー
						objIE.MenuBar = False       	'メニューバー
						objIE.Toolbar = False       	'ツールバー
						objIE.StatusBar = False     	'ステータスバー
						objIE.StatusText = "テキスト"    'ステータステキスト
						Debug.WriteLine(objIE.StatusText)
					
						objIE.AddressBar = False;    	//アドレスバー
						objIE.MenuBar = False;       	//メニューバー
						objIE.Toolbar = False;       	//ツールバー
						objIE.StatusBar = False;     	//ステータスバー
						objIE.StatusText = "テキスト";   //ステータステキスト
						Console.WriteLine(objIE.StatusText);
					
						objIE.AddressBar = False	'アドレスバー
						objIE.MenuBar = False		'メニューバー
						objIE.Toolbar = False		'ツールバー
						objIE.StatusBar = False		'ステータスバー
					

InternetExplorerの終了処理

InternetExplorerを起動後、操作するアプリケーションを終了させてもInternetExplorerは終了せずに残ります。
アプリケーションの終了時にInternetExplorerも閉じるには、InternetExplorerに終了を指示する必要があります。

実装方法

サンプル

						If Not objIE Is Nothing Then
							objIE.Quit()
							objIE = Nothing
						End If
					
						if(objIE != null){
							objIE.Quit();
							objIE = null;
						}
					
						If Not objIE Is Nothing Then
							objIE.Quit
							Set objIE = Nothing
						End If