IEウィンドウの位置やサイズを設定

<< エクセルVBAで起動済みのIEを制御する :前の記事

前回は、起動済みのIE(InternetExplorer)を制御する方法について解説しました。InternetExplorerオブジェクトを特定するための条件としてサイトURLでチェックを行いましたが、特定ができるものであればサイトの名前でも何でも構いません。サイトURLを選択したのは、単にコピペができるので楽に記述しやすいという点で選びました。他にも色々な方法がありますので、その1つとして覚えておきましょう。

今回は、IE(InternetExplorer)ウィンドウの位置やサイズを指定して表示する方法について解説します。IE(InternetExplorer)ウィンドウの位置やサイズなんて特に気にしないという方もいるかと思いますが、目的によっては必要な機能となります。

例えば2つのサイトの内容を比較したい場合、何も設定していないと重なって表示されてしまうため、毎回手動でIE(InternetExplorer)ウィンドウを移動しなければならず手間がかかります。

そのような時にAサイトとBサイトの表示位置を事前に設定し制御しておけば、簡単に比較することができます。実際に2つのページを並べる方法は次回解説しますので、ここではIEウィンドウの位置やサイズを設定する方法を中心に解説していきます。

目次

IE(InternetExplorer)ウィンドウの位置・サイズを設定する処理の流れ

以下が今回の処理の流れになります。

  • ①変数宣言
  • ②ieViewサブルーチンを利用して本サイトをIEで起動
  • ③TopプロパティにY位置設定
  • ④LeftプロパティにX位置設定
  • ⑤WidthプロパティにWebブラウザの幅設定
  • ⑥HeightプロパティにWebブラウザの高さ設定

利用するサブルーチン・プロパティについて

今回利用するサブルーチンプロパティは以下になります。

  • ieViewサブルーチン
  • ieCheckサブルーチン
  • Topプロパティ
  • Leftプロパティ
  • Widthプロパティ
  • Heightプロパティ

ieViewサブルーチンとは

ieViewサブルーチンは指定したURLをInternetExplorerで起動させ、Webページが完全に読み込まれるまで待機処理をするマクロです。

ieView("IEオブジェクト","表示させたいURLの文字列","IE表示・非表示の値[省略可]")

ieCheckサブルーチンとは

ieCheckサブルーチン指定したInternetExplorerオブジェクトのWebページが完全に読み込まれるまで待機処理をするマクロです。

ieCheck("IEオブジェクト")

Topプロパティとは

InternetExplorerオブジェクトのTopプロパティディスプレイ画面の上端からIEウィンドウの上端までの距離の値を取得または設定をすることができます。基準はディスプレイ画面の左上からになります。また、単位はピクセル(1ピクセル=1/96インチ)になります。

objIE.Top = 倍精度浮動小数点型(Double)
変数 = objIE.Top

Leftプロパティとは

InternetExplorerオブジェクトのLeftプロパティディスプレイ画面の左端かIEウィンドウの左端までの距離の値を取得または設定をすることができます。基準はディスプレイ画面の左上からになります。また、単位はピクセル(1ピクセル=1/96インチ)になります。

objIE.Left = 倍精度浮動小数点型(Double)
変数 = objIE.Left

Widthプロパティとは

InternetExplorerオブジェクトのWidthプロパティIEウィンドウの幅の値を取得または設定をすることができます。また、単位はピクセル(1ピクセル=1/96インチ)になります。

objIE.Width = 倍精度浮動小数点型(Double)
変数 = objIE.Width

Heightプロパティとは

InternetExplorerオブジェクトのHeightプロパティIEウィンドウの高さの値を取得または設定をすることができます。また、単位はピクセル(1ピクセル=1/96インチ)になります。

objIE.Height = 倍精度浮動小数点型(Double)
変数 = 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を起動し指定した位置と高さで表示されます。
単位はピクセルです。

Webブラウザの位置と高さ設定

解説

Sub sample()

    Dim objIE  As InternetExplorer

こちらはSubステートメント引数の設定がないsampleプロシージャになります。 まずは、変数宣言でメモリ領域を割り当てるDimステートメントを利用してオブジェクト変数objIEInternetExplorer型変数宣言しています。

これにより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("IEオブジェクト","表示させたいURLの文字列","IE表示・非表示の値[省略可]","Y位置の値[省略可]","X位置の値[省略可]","幅の値[省略可]","高さの値[省略可]")
構文ieView(objIE,urlName,[viewFlg],[ieTop],[ieLeft],[ieWidth],[ieHeight])
引数名データ型内容値の事例初期値省略
objIEInternetExplorerInternetExplorerオブジェクトを指定します。objIE,objIE2×
urlNameStringInternetExplorerに表示させたいURLの文字列を指定します。"http://www.vba-ie.net/"×
viewFlgBoolean「True」を設定するとIE(InternetExplorer)が表示され、「False」を設定すると非表示になります。規定値には「True」が設定されています。True,FalseTrue
ieTopIntegerIEウィンドウのY位置の値を設定します。1000
ieLeftIntegerIEウィンドウのX位置の値を設定します。1500
ieWidthIntegerIEウィンドウの幅の値を設定します。400600
ieHeightIntegerIEウィンドウの高さの値を設定します。300800

引数objIEは必須項目で、指定したURLを表示させるInternetExplorerオブジェクトを指定します。InternetExplorerオブジェクトを引数に設定することで、複数のオブジェクトを処理することができます。次の引数urlNameも必須項目で、InternetExplorerに表示させるURLを設定します。

引数viewFlgは、IEの表示・非表示の設定値ブール型(Boolean)で指定します。こちらには引数を省略できるキーワードOptionalが設定されており、規定値が「True」の省略可能な引数となります。よって省略した場合は常にInternetExplorerが表示されます。

引数ieTopIEウィンドウのX位置の値引数ieLeftIEウィンドウのY位置の値引数ieWidthIEウィンドウの幅の値引数ieHeightIEウィンドウの高さの値整数型(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
Webブラウザの位置と高さ設定

解説

Sub sample()

  Dim objIE  As InternetExplorer

まず、Dimステートメントを利用してオブジェクト変数objIE,objIE2InternetExplorer型を宣言しています。これにより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ウィンドウを横並び(縦並び)にする >>

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

近田 伸矢, 植木 悠二, 上田 寛

IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。

  • このエントリーをはてなブックマークに追加
VBAのIE制御についてのQ&A掲示板

↑エクセルVBAのIE(InternetExplorer)操作で分からない事があればこちらの掲示板よりご質問ください^^

ExcelのVBA初心者入門

↑こちらはExcelのVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

VBAでIE(InternetExplorer)制御の準備

【ダウンロード】IE操作に便利なツール

こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。

IEオブジェクトのメソッド・プロパティ

こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。

IE操作に利用されているVBA関数

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。

IE操作に利用されているステートメント

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。

IE(InternetExplorer)制御のVBAコード

こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。