IEウィンドウの位置やサイズを設定
<< エクセルVBAで起動済みのIEを制御する :前の記事
前回は、起動済みのIE(InternetExplorer)を制御する方法について解説しました。InternetExplorerオブジェクトを特定するための条件としてサイトURLでチェックを行いましたが、特定ができるものであればサイトの名前でも何でも構いません。サイトURLを選択したのは、単にコピペができるので楽に記述しやすいという点で選びました。他にも色々な方法がありますので、その1つとして覚えておきましょう。
今回は、IE(InternetExplorer)ウィンドウの位置やサイズを指定して表示する方法について解説します。IE(InternetExplorer)ウィンドウの位置やサイズなんて特に気にしないという方もいるかと思いますが、目的によっては必要な機能となります。
例えば2つのサイトの内容を比較したい場合、何も設定していないと重なって表示されてしまうため、毎回手動でIE(InternetExplorer)ウィンドウを移動しなければならず手間がかかります。
そのような時にAサイトとBサイトの表示位置を事前に設定し制御しておけば、簡単に比較することができます。実際に2つのページを並べる方法は次回解説しますので、ここではIEウィンドウの位置やサイズを設定する方法を中心に解説していきます。
目次
- IE(InternetExplorer)ウィンドウの位置・サイズを設定する処理の流れ
- 利用するサブルーチン・プロパティについて
- IE(InternetExplorer)ウィンドウの位置・サイズを設定するサンプルコード
- IEウィンドウの位置・サイズを設定してページ表示するサブルーチン「ieView」の解説
- 「ieView」を利用したIEウィンドウの位置・サイズを設定してページ表示するサンプルコード
- まとめ
IE(InternetExplorer)ウィンドウの位置・サイズを設定する処理の流れ
以下が今回の処理の流れになります。
- ①変数宣言
- ②ieViewサブルーチンを利用して本サイトをIEで起動
- ③TopプロパティにY位置設定
- ④LeftプロパティにX位置設定
- ⑤WidthプロパティにWebブラウザの幅設定
- ⑥HeightプロパティにWebブラウザの高さ設定
利用するサブルーチン・プロパティについて
- ieViewサブルーチン
- ieCheckサブルーチン
- Topプロパティ
- Leftプロパティ
- Widthプロパティ
- Heightプロパティ
ieViewサブルーチンとは
ieViewサブルーチンは指定したURLをInternetExplorerで起動させ、Webページが完全に読み込まれるまで待機処理をするマクロです。
ieCheckサブルーチンとは
ieCheckサブルーチンは指定したInternetExplorerオブジェクトのWebページが完全に読み込まれるまで待機処理をするマクロです。
Topプロパティとは
InternetExplorerオブジェクトのTopプロパティはディスプレイ画面の上端からIEウィンドウの上端までの距離の値を取得または設定をすることができます。基準はディスプレイ画面の左上からになります。また、単位はピクセル(1ピクセル=1/96インチ)になります。
変数 = objIE.Top
Leftプロパティとは
InternetExplorerオブジェクトのLeftプロパティはディスプレイ画面の左端かIEウィンドウの左端までの距離の値を取得または設定をすることができます。基準はディスプレイ画面の左上からになります。また、単位はピクセル(1ピクセル=1/96インチ)になります。
変数 = objIE.Left
Widthプロパティとは
InternetExplorerオブジェクトのWidthプロパティはIEウィンドウの幅の値を取得または設定をすることができます。また、単位はピクセル(1ピクセル=1/96インチ)になります。
変数 = objIE.Width
Heightプロパティとは
InternetExplorerオブジェクトのHeightプロパティはIEウィンドウの高さの値を取得または設定をすることができます。また、単位はピクセル(1ピクセル=1/96インチ)になります。
変数 = objIE.Height
IE(InternetExplorer)ウィンドウの位置・サイズを設定するサンプルコード
「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インチ)になりますので、注意してください。
- Topプロパティ・・・IEウィンドウのX位置
- Leftプロパティ・・・IEウィンドウのY位置
- Widthプロパティ・・・IEウィンドウの幅
- Heightプロパティ・・・IEウィンドウの高さ
これで指定した値でIEウィンドウが表示されます。最後は、Endステートメントを利用してプロシージャを終了させます。
今回は値を設定するだけですので、特に難しい内容ではなかったかと思います。IEウィンドウの位置やサイズを設定したい場合もありますので、「指定URLをInternetExplorerで起動するサブルーチン」で作成したieViewサブルーチンに改良を加えてみましょう。
IEウィンドウの位置・サイズを設定してページ表示するサブルーチン「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が設定されていますので、省略できます。
今回は、以下のように設定していますが、お好きな値で設定しても構いません。
- ieTop = 0
- ieLeft = 0
- ieWidth = 600
- ieHeight = 800
'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サブルーチンを利用したサンプルコードを見ていきましょう。
「ieView」を利用したIEウィンドウの位置・サイズを設定してページ表示するサンプルコード
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部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。