複数のIEウィンドウを横並び(縦並び)に設定

<< エクセルVBAでIEウィンドウの位置やサイズを設定する :前の記事

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

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

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

目次

2つのIE(InternetExplorer)を横に並べる処理の流れ

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

  • ①変数宣言
  • ②ieViewサブルーチンを利用して本サイトをIEで起動
  • ③IEウィンドウを最大化で表示
  • ④最大化したIEウィンドウの幅・高さの値を取得
  • ⑤IEウィンドウを標準サイズで表示
  • ⑥IEウィンドウ(本サイト)の位置・サイズを設定
  • ⑦ieViewサブルーチンを利用してyahooサイトをIEで起動
  • ⑧IEウィンドウ(yahooサイト)の位置・サイズを設定

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

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

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

ieViewサブルーチンとは

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

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

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

FullScreenプロパティとは

InternetExplorerオブジェクトのFullScreenプロパティは、IEウィンドウを最大化し、アドレスバー・メニューバー・ツールバー・ステータスバーを非表示にします。

objIE.FullScreen = ブーリアン型(Boolean)の値
変数 = objIE.FullScreen

Int関数とは

Int関数とは、指定した数値または計算式の整数部分を返します。尚、小数部分がある場合は小数点以下を切り捨てた整数値を返します。

変数 = Int(数値または計算式)

2つのIE(InternetExplorer)を横に並べるサンプルコード

2つのIE(InternetExplorer)を横に並べるマクロです。

Sub sample()

    Dim objIE As InternetExplorer, objIE2 As InternetExplorer
    Dim maxWidth As Integer, maxHeight As Integer, halfWidth As Integer
    
    '本サイトをIE(InternetExplorer)で起動
    Call ieView(objIE, "http://www.vba-ie.net/")
    
    'IEウィンドウの最大化
    objIE.Fullscreen = True
    
    maxWidth = objIE.Width  'IEウィンドウの最大幅
    maxHeight = objIE.Height    'IEウィンドウ最大高さ

    'IEウィンドウのサイズ標準
    objIE.Fullscreen = False
    
    halfWidth = Int(maxWidth / 2)

    With objIE
        .Top = 0
        .Left = 0
        .Width = halfWidth
        .Height = maxHeight
    End With
    
    'yahooサイトをIE(InternetExplorer)で起動
    Call ieView(objIE2, "http://yahoo.co.jp", , 0, halfWidth, halfWidth, maxHeight)

End Sub

実行結果

本サイトとyahooサイトが横並びで表示されます。

VBAのIE制御2つサイトを横に並べた画面

解説

Sub sample()

    Dim objIE As InternetExplorer, objIE2 As InternetExplorer
    Dim maxWidth As Integer, maxHeight As Integer, halfWidth As Integer

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

    '本サイトをIE(InternetExplorer)で起動
    Call ieView(objIE, "http://www.vba-ie.net/")

次に他のプロシージャを呼び出すCallステートメントを利用してieViewサブルーチンを呼び出しています。それぞれの第一引数にはオブジェクト変数の「objIE」を第二引数には表示させるURLの「http://www.vba-ie.net/」を設定しています。これにより本サイトがInternetExplorerで表示されます。

    'IEウィンドウの最大化
    objIE.Fullscreen = True

こちらはウィンドウ表示の設定でIEウィンドウを最大化させるInternetExplorerオブジェクトのFullscreenプロパティの値を「True」に設定するとIEウィンドウが最大化されます。これはIEウィンドウの最大化状態からディスプレイサイズを取得するための処理です。

    maxWidth = objIE.Width  'IEウィンドウの最大幅
    maxHeight = objIE.Height    'IEウィンドウ最大高さ

IEウィンドウの最大化状態からIEウィンドウの幅と高さを取得します。最大化した状態ですのでこちらの値が、ディスプレイのサイズとなります。変数maxWidthにはInternetExplorerオブジェクトのWidthプロパティを利用してIEウィンドウの幅サイズを、変数maxHeightにはInternetExplorerオブジェクトのHeightプロパティを利用してIEウィンドウの高さサイズ代入演算子で代入しています。尚、単位はピクセルになります。

    'IEウィンドウのサイズ標準
    objIE.Fullscreen = False

こちらでは再度InternetExplorerオブジェクトのFullscreenプロパティを利用して、IEウィンドウのサイズを標準に戻しています。後で横並びにするならわざわざ戻す必要もないのではという方もいらっしゃると思いますが、こちらはとても重要な処理です。

というのもIEウィンドウを最大化した状態からIEウィンドウの位置やサイズを設定することができないためです。IEウィンドウの位置やサイズを設定する場合はIEウィンドウの位置やサイズを変更できる標準の状態に戻す必要があります。

    halfWidth = Int(maxWidth / 2)

こちらは変数halfWidthIEウィンドウ最大幅サイズの1/2の値を代入しています。今回は2つのIEウィンドウを横並びにするため、IEウィンドウの最大幅の1/2がそれぞれのIEウィンドウの幅になります。

右辺の処理はIEウィンドウの最大幅の値が格納されている変数maxWidthの値を算術演算子を利用して2で割っています。変数maxWidthの値はディスプレイのサイズですので、基本的に2で割ったとして整数値で取得できると思いますが、念のためInt関数を利用して整数値で取得してから変数halfWidthに代入しています。

少し話がそれますが、変数halfWidth整数型(Integer)ですので、例え「maxWidth / 2」の値が小数点を含む値だったとしても四捨五入されて丸められます。それに対してInt関数小数点を切り捨てますので、得られる値が異なります。

今回の場合は、数値の結果を求めているわけではないのでどちらでも構いませんが、数値を結果として求める場合は、理解したうえでVBA関数を利用するようにしましょう。今回利用したのは切り捨てられた値の方が確実にディスプレイ内に収まるであろう程度の話で利用しています。

    With objIE
        .Top = 0
        .Left = 0
        .Width = halfWidth
        .Height = maxHeight
    End With

こちらでは、1つのオブジェクトに対して処理をまとめるWithステートメントのオブジェクト名に「objIE」を設定しています。こちらはInternetExplorerオブジェクトになりますので、Withステートメント内では、オブジェクト名を省略して記述することができます。

次に、InternetExplorerオブジェクトの「Topプロパティ」「Leftプロパティ」「Widthプロパティ」「Heightプロパティ」に値を設定しています。IEウィンドウの幅サイズは先ほど取得した変数halfWidthの値を、高さサイズは最大化状態で取得したmaxHeightの値を設定しています。これによりディスプレイを2分割にした左側一面にIEウィンドウが表示されました。

    'yahooサイトをIE(InternetExplorer)で起動
    Call ieView(objIE2, "http://yahoo.co.jp", , 0, halfWidth, halfWidth, maxHeight)

End Sub

こちらはCallステートメントを利用してieViewサブルーチンを呼び出しています。第一引数にはオブジェクト変数の「objIE2」を、第二引数には表示させるURLの「http://yahoo.co.jp」を、第三引数は省略して設定しています。

次に第四~第七引数にはIEウィンドウの位置とサイズの値が設定されています。オブジェクト変数objIE2のIEウィンドウの位置はディスプレイを2分割にした右側に配置されますので、IEウィンドウのX位置は2分割した位置になる「変数halfWidth」が設定されています。

IEウィンドウのサイズについては左側のIEウィンドウと同じですので、それぞれ「変数halfWidth」と「変数maxHeight」を設定しています。これで、2つのIEウィンドウを横並びにすることができました。

最後は、Endステートメントを利用してプロシージャを終了させます。

まとめ

今回は、2つのIEウィンドウを横並びにする方法について解説してきました。縦並びにする場合も同様の処理になりますので、チャレンジしてみてください。次回はIE(InternetExplorer)でなく、ExcelウィンドウとIE(InternetExplorer)ウィンドウを横並びにする方法について解説していきます。こちらは今回の処理では対応できません。そのポイントとなるのが「単位」です。是非そちらも確認してください。

次の記事: エクセルVBAでIEウィンドウとExcelウィンドウを横並びにする >>

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)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。