ie-excel

エクセル・マクロでie操作

Excel VBAでIEを操作 ieを最前面にする

2018/11/09

Excel VBAを使用していると、ある状態になった場合そのウィンドウを最前面に表示。
その次の作業をさせたいようなケースがあります。
そのため、今回はWindowを最前面に出す方法を解説したいと思います。

紹介する方式は2種類。

前準備

  • Visual Basic Editor の画面から「ツール」→「参照設定」を選択します。
  • 「Microsoft Internet Controls」と「Microsoft HTML Object Library」にチェックを入れて、OKを押す

ieを最前面にする

ヒトがieの画面を最前面にする場合は以下の操作をします。

  1. IEを立ち上げる
  2. URLを入力する
  3. サイトが表示されるのを待つ
  4. IEを最前面にする

上記をVBAで表現すると以下のようになります。

SetForegroundWindowを利用した方法

3つのサイトを開いて、最初に開いたサイトを最前面にする方式です。

本当はSleepを使用したくはなかったのですが、させないと時々意図しないウィンドウが最前面となるために使用しています。

SetForegroundWindowとSleepを宣言する
「SetForegroundWindow」「Sleep」それぞれを使用するために、APIを宣言しています。

64bitと32bitで宣言方法が異なるため、それぞれに対応するように分岐させています。

最前面に表示する
今回は「objIE1」として開いたGoogleのサイトを最前面となるようにしています。

「objIE1」の箇所を「objIE2」や「objIE3」に変更すれば、該当のウィンドウが最前面となります。

「SetForegroundWindow」を使用すると、このように簡単に指定できます。

 

 

AppActivateを使用した最前面表示方法

SetForegroundWindowではなくAppActivateを用いた方法の例示です。

AppActivateを実行してアクティブ化し、その後最大化と元のサイズに戻す

本当はこちらの方がスマートなやり方のはずですが・・・

AppActivateを宣言したのち、内部ではアクティブになっているようですが、残念ながらデスクトップ上では前面には出てこないことも・・・
そこで「SendKey」で一度ウィンドウのサイズを最大化してから、元のサイズに戻しています。

また、最大化する際「ALT」+「Space」+「X」ですが、時々「ALT」+「SPACE」で止まることもあるようなため、「X」を押すタイミングは若干Sleepを入れてずらしています。

元のウィンドウサイズに戻すのは「ALT」+「Space」+「R」のため、後半はその記述です。

Sleepをたくさん入れなければならないため「SetForegroundWindow」を用いた方法の方がスマートです。

-ExcelでIE操作