VBAのIE(InternetExplorer)制御でIEウィンドウの位置や大きさを設定するプロパティについて解説しています。
<< エクセルVBAで起動済みのIEを制御する :前の記事
前回は、起動済みのIE(InternetExplorer)を制御する方法について解説しました。InternetExplorerオブジェクトを特定するための条件としてサイトURLでチェックを行いましたが、特定ができるものであればサイトの名前でも何でも構いません。サイトURLを選択したのは、単にコピペができるので楽に記述しやすいという点で選びました。他にも色々な方法がありますので、その1つとして覚えておきましょう。
今回は、IE(InternetExplorer)ウィンドウの位置やサイズを指定して表示する方法について解説します。IE(InternetExplorer)ウィンドウの位置やサイズなんて特に気にしないという方もいるかと思いますが、目的によっては必要な機能となります。
例えば2つのサイトの内容を比較したい場合、何も設定していないと重なって表示されてしまうため、毎回手動でIE(InternetExplorer)ウィンドウを移動しなければならず手間がかかります。
そのような時にAサイトとBサイトの表示位置を事前に設定し制御しておけば、簡単に比較することができます。実際に2つのページを並べる方法は次回解説しますので、ここではIEウィンドウの位置やサイズを設定する方法を中心に解説していきます。
以下が今回の処理の流れになります。
ieViewサブルーチンは指定したURLをInternetExplorerで起動させ、Webページが完全に読み込まれるまで待機処理をするマクロです。
ieCheckサブルーチンは指定したInternetExplorerオブジェクトのWebページが完全に読み込まれるまで待機処理をするマクロです。
InternetExplorerオブジェクトのTopプロパティはディスプレイ画面の上端からIEウィンドウの上端までの距離の値を取得または設定をすることができます。基準はディスプレイ画面の左上からになります。また、単位はピクセル(1ピクセル=1/96インチ)になります。
InternetExplorerオブジェクトのLeftプロパティはディスプレイ画面の左端かIEウィンドウの左端までの距離の値を取得または設定をすることができます。基準はディスプレイ画面の左上からになります。また、単位はピクセル(1ピクセル=1/96インチ)になります。
InternetExplorerオブジェクトのWidthプロパティはIEウィンドウの幅の値を取得または設定をすることができます。また、単位はピクセル(1ピクセル=1/96インチ)になります。
InternetExplorerオブジェクトのHeightプロパティはIEウィンドウの高さの値を取得または設定をすることができます。また、単位はピクセル(1ピクセル=1/96インチ)になります。
「VBAのIE制御」サイトのトップページをIE(InternetExplorer)で起動させIEウィンドウの位置と高さを設定するマクロです。
Sub sample()
Dim objIE As InternetExplorer
'本サイトをIE(InternetExplorer)で起動
Call ieView(objIE, "http://www.vba-ie.net/")
With objIE
.Top = 100 'Y位置(上下)
.Left = 200 'X位置(左右)
.Width = 500 'IEウィンドウの幅
.Height = 250 'IEウィンドウの高さ
End With
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
IEを起動し指定した位置と高さで表示されます。
単位はピクセルです。
Sub sample()
Dim objIE As InternetExplorer
※ドラッグ(スワイプ)すると全体を確認できます。
こちらはSubステートメントに引数の設定がないsampleプロシージャになります。 まずは、変数宣言でメモリ領域を割り当てるDimステートメントを利用してオブジェクト変数objIEにInternetExplorer型を変数宣言しています。
これによりInternetExplorerオブジェクトを作成した際にプロパティやメソッドを利用できるようになりました。
'本サイトをIE(InternetExplorer)で起動
Call ieView(objIE, "http://www.vba-ie.net/")
※ドラッグ(スワイプ)すると全体を確認できます。
次に他のプロシージャを呼び出すCallステートメントを利用してieViewサブルーチンを呼び出しています。 第一引数にはオブジェクト変数の「objIE」を第二引数には表示させるURLの「http://www.vba-ie.net/」を設定しています。これにより本サイトがInternetExplorerで表示されます。
With objIE
.Top = 100 'Y位置(上下)
.Left = 200 'X位置(左右)
.Width = 500 'IEウィンドウの幅
.Height = 250 'IEウィンドウの高さ
End With
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
こちらでは、1つのオブジェクトに対して処理をまとめるWithステートメントのオブジェクト名に「objIE」を設定しています。こちらはInternetExplorerオブジェクトになりますので、Withステートメント内では、オブジェクト名を省略して記述することができます。
次に、InternetExplorerオブジェクトの「Topプロパティ」「Leftプロパティ」「Widthプロパティ」「Heightプロパティ」に値を設定しています。それぞれの設定内容は以下になりますが、単位はピクセル(1ピクセル=1/96インチ)になりますので、注意してください。
これで指定した値でIEウィンドウが表示されます。最後は、Endステートメントを利用してプロシージャを終了させます。
今回は値を設定するだけですので、特に難しい内容ではなかったかと思います。IEウィンドウの位置やサイズを設定したい場合もありますので、「指定URLをInternetExplorerで起動するサブルーチン」で作成したieViewサブルーチンに改良を加えてみましょう。
こちらは、IEウィンドウの位置・サイズを設定してページ表示するサブルーチンになります。
Sub ieView(objIE As InternetExplorer, _
urlName As String, _
Optional viewFlg As Boolean = True, _
Optional ieTop As Integer = 0, _
Optional ieLeft As Integer = 0, _
Optional ieWidth As Integer = 600, _
Optional ieHeight As Integer = 800)
'IE(InternetExplorer)のオブジェクトを作成する
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
'IE(InternetExplorer)を表示・非表示
.Visible = viewFlg
.Top = ieTop 'Y位置
.Left = ieLeft 'X位置
.Width = ieWidth '幅
.Height = ieHeight '高さ
'指定したURLのページを表示する
.navigate urlName
End With
'IE(InternetExplorer)が完全表示されるまで待機
Call ieCheck(objIE)
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
それでは、VBAコードを1つずつ説明していきます。
Sub ieView(objIE As InternetExplorer, _
urlName As String, _
Optional viewFlg As Boolean = True, _
Optional ieTop As Integer = 0, _
Optional ieLeft As Integer = 0, _
Optional ieWidth As Integer = 600, _
Optional ieHeight As Integer = 800)
※ドラッグ(スワイプ)すると全体を確認できます。
こちらはSubステートメントに引数を7つ設定しているieViewサブルーチンになります。こちらの構文と引数の内容は以下になります。尚、引数はすべて参照渡しで渡されます。
構文 | ieView(objIE,urlName,[viewFlg],[ieTop],[ieLeft],[ieWidth],[ieHeight]) | ||||
---|---|---|---|---|---|
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
objIE | InternetExplorer | InternetExplorerオブジェクトを指定します。 | objIE,objIE2 | × | |
urlName | String | InternetExplorerに表示させたいURLの文字列を指定します。 | "http://www.vba-ie.net/" | × | |
viewFlg | Boolean | 「True」を設定するとIE(InternetExplorer)が表示され、「False」を設定すると非表示になります。規定値には「True」が設定されています。 | True,False | True | ● |
ieTop | Integer | IEウィンドウのY位置の値を設定します。 | 100 | 0 | ● |
ieLeft | Integer | IEウィンドウのX位置の値を設定します。 | 150 | 0 | ● |
ieWidth | Integer | IEウィンドウの幅の値を設定します。 | 400 | 600 | ● |
ieHeight | Integer | IEウィンドウの高さの値を設定します。 | 300 | 800 | ● |
引数objIEは必須項目で、指定したURLを表示させるInternetExplorerオブジェクトを指定します。InternetExplorerオブジェクトを引数に設定することで、複数のオブジェクトを処理することができます。次の引数urlNameも必須項目で、InternetExplorerに表示させるURLを設定します。
引数viewFlgは、IEの表示・非表示の設定値をブール型(Boolean)で指定します。こちらには引数を省略できるキーワードOptionalが設定されており、規定値が「True」の省略可能な引数となります。よって省略した場合は常にInternetExplorerが表示されます。
引数ieTopはIEウィンドウのX位置の値を引数ieLeftはIEウィンドウのY位置の値を引数ieWidthはIEウィンドウの幅の値を引数ieHeightはIEウィンドウの高さの値を整数型(Integer)で指定します。こちらもキーワードOptionalが設定されていますので、省略できます。
今回は、以下のように設定していますが、お好きな値で設定しても構いません。
'IE(InternetExplorer)のオブジェクトを作成する
Set objIE = CreateObject("InternetExplorer.Application")
※ドラッグ(スワイプ)すると全体を確認できます。
初めにオブジェクトを参照するSetステートメントとオブジェクトを作成するCreateObject関数を利用してInternetExplorerのオブジェクトを作成します。
With objIE
'IE(InternetExplorer)を表示・非表示
.Visible = viewFlg
※ドラッグ(スワイプ)すると全体を確認できます。
こちらは、Withステートメントのオブジェクト名に「objIE」を設定しています。こちらはInternetExplorerオブジェクトになりますので、Withステートメント内では、オブジェクト名を省略して記述することができます。
Withステートメント内の処理になりますが、InternetExplorerオブジェクトのVisibleプロパティに「引数viewFlg」が設定されています。VisibleプロパティはInternetExplorerの表示・非表示の設定になりますので、「True」を設定するとInternetExplorerが表示されます。
引数viewFlgの規定値は「True」が設定されていますので、省略した場合はInternetExplorerが表示されます。非表示にしたい場合は「False」を設定してください。
.Top = ieTop 'Y位置
.Left = ieLeft 'X位置
.Width = ieWidth '幅
.Height = ieHeight '高さ
※ドラッグ(スワイプ)すると全体を確認できます。
次は、InternetExplorerオブジェクトの「Topプロパティ」「Leftプロパティ」「Widthプロパティ」「Heightプロパティ」に値を設定しています。それぞれの引数の値が設定されています。こちらは省略可能な引数ですので、指定しない場合は規定値が反映されます。また、単位はピクセル(1ピクセル=1/96インチ)になりますので、注意してください。
'指定したURLのページを表示する
.navigate urlName
End With
※ドラッグ(スワイプ)すると全体を確認できます。
指定したURLをInternetExplorerで表示するInternetExplorerオブジェクトのNavigateメソッドの設定です。Navigateメソッドの第一引数にはieViewサブルーチンの第二引数である表示させるWebページのURLを設定しています。
'IE(InternetExplorer)が完全表示されるまで待機
Call ieCheck(objIE)
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
こちらは、Callステートメントを利用してWebページが完全に読み込まれるまで待機処理をするieCheckサブルーチンを呼び出しています。 引数に待機処理させるInternetExplorerオブジェクトを設定することで指定したオブジェクトのWebページが完全に読み込まれるまで待機します。
Webページの読み込みが完了したら、Endステートメントを利用してプロシージャを終了させます。
こちらを利用することで、IEウィンドウの位置やサイズを指定して表示できるようになります。それでは、実際に改良したieNaviサブルーチンを利用したサンプルコードを見ていきましょう。
Sub sample()
Dim objIE As InternetExplorer
'本サイトを起動
Call ieView(objIE, "http://www.vba-ie.net/", , 100, 200, 500, 250)
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
Sub sample()
Dim objIE As InternetExplorer
※ドラッグ(スワイプ)すると全体を確認できます。
まず、Dimステートメントを利用してオブジェクト変数objIE,objIE2にInternetExplorer型を宣言しています。これによりInternetExplorerオブジェクトを作成した際にプロパティやメソッドを利用できるようになりました。
'本サイトを起動
Call ieView(objIE, "http://www.vba-ie.net/", , 100, 200, 500, 250)
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
次にCallステートメントを利用してieViewサブルーチンを呼び出しています。第一引数にはオブジェクト変数の「objIE」を第二引数には表示させるURLの「http://www.vba-ie.net/」を設定しています。
そして、第三~第七引数まではキーワードOptionalが設定されていますので、省略可能となります。第三引数はInternetExplorerの表示・非表示の設定で、規定値に「True」が設定されていますので今回は省略します。省略する場合は以下のように何も記述せず「,(カンマ)」で区切ります。
Call ieView(objIE, "http://www.vba-ie.net/", , 100, 200, 500, 250)
※ドラッグ(スワイプ)すると全体を確認できます。
第四~第七引数はIEウィンドウの位置とサイズの設定で、それぞれ引数の値が設定されています。これによりIEウィンドウの位置やサイズが設定されました。今回は既存のサブルーチンに新しい引数を加えてより汎用性の高いサブルーチンに仕上がりました。機能の追加はよくあることですので、処理内容に合わせてカスタマイズしてください。
また、今回引数は「,(カンマ)」で区切る方法で設定していますが、名前付き引数を利用して設定することもできます。名前付き引数を利用する場合は、以下のように引数名に「:=(コロンとイコール)」を記述し、その後に引数の設定値を記述します。引数が多いなど直接名前付き引数で設定したほうが簡単な場合もありますので、その際はこちらを利用しましょう。
Call ieView(objIE:=objIE, _
urlName:="http://www.vba-ie.net/", _
ieWidth:=500)
※ドラッグ(スワイプ)すると全体を確認できます。
今回は、IEウィンドウの位置やサイズを設定する方法について解説してきました。これで自由に位置やサイズを設定することができますが、作成したサブルーチンでは簡単に2つのIE(InternetExplorer)を横並びにすることはできません。次回は、2つのIE(InternetExplorer)を簡単に横並びにする方法について解説しますが、きれいに並べるにはまずディスプレイのサイズを取得する必要がありますので、そちらも合わせて解説していきます。
次の記事: 複数のIEウィンドウを横並び(縦並び)にする >>
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)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。