ie-excel

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

Excel VBAでIEを閉じる

2018/11/09

Webブラウザで一連の操作が終了した場合、Excelマクロからieを閉じる方法を今回は紹介します。

IEを終了するには「Quit」を宣言すればいいだけとなります

ieを閉じるまで、ヒトが操作すると以下の行為が必要です。

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

といった動きになりますので、以下の通りの記述をすれば、該当サイトの再読み込みが可能となります。

マクロを実行したら、IEが起動し「Yahoo!Japan」が開き、そしてIEが閉じませんでしたか?

VBAに慣れていない方からすると難しく感じるかもしれませんが、この辺は「お約束」としてある程度覚えてしまった方がいいでしょう。

上記コードの解説

上記コードを上から順に、「お約束」ごとや「意味」などを簡単に解説します。

変数を定義(objIE)
上記コードはこのモジュール全体で「objIE」をInternet Explorer型オブジェクトと定義しています。

間違っているかもしれませんが、理解いただくために嘘くさい説明をすると

モジュール  : このプログラム全体
変数     : 長い単語を何度も書くのはめんどくさいので、省略文字に置き換える
オブジェクト : 集合体

「objIE」は好きな文字列に変更いただいてかまいません。
当サイトでは「objIE」で統一していきます。

参考まで、「Dim objIE As Object」でも稼働しますが、Internet Explorer型オブジェクトを指定することでインテリセンス(自動補完)機能が働くので今後のコーディングに非常に便利です。

変数を定義(docIE)
上記コードはこのモジュール全体で「docIE」をHTML型ドキュメントとして定義しています。

今回は使用していませんが、以後毎回使用するために記載しておきます。

サイトを呼び出した結果、上記Internet Explorer型オブジェクトである「objIE」のDocumentプロパティにHTMLDocumentオブジェクトとして収録されます。
と書いても難しいかと思いますので、毎回お約束のように定義してください。

なお経験上、HTML型ドキュメントにセットしなければ取得できないプロパティもあります。
そのため、HTMLドキュメントに収録することをお勧めします。

上記同様「docIE」ば好きな文字列に変更いただいてかまいません。
当サイトでは「docIE」で統一していきます。

プログラムの実行単位を定義
Subはプログラムの実行単位です。

次のEnd Subまでがプログラムになります。
IE_openはそのプログラム名となり、最初のSubの直後に記載します。
()はここではお約束として覚えておきましょう。
IE_openという名前のプログラムは「・・・」の間に記述されることになります。

IEを立ち上げる
この2行はIEを起動するための「お約束」だと思ってください。
最初に指定したオブジェクトの変数にオブジェクトを作成し、そのオブジェクトを可視化しています。
なんてことは覚えても、ExcelでVBAを操作する限りにおいては役に立ちません。

覚えておきたいのは、ObjIEは先に定義した変数ですので、この名前「objIE」を変更する場合は、全体的に修正をしてください。

URLを指定
開くURLを指定しています。
もちろん好きなサイトのURLに変更いただければ、そのサイトが表示されることとなります。

画面が表示されるのを待つ
Webサイトの情報がすべて表示されるまで、完全に表示されるまでは、「Busy = False」かつ「ReadyState = READYSTATE_COMPLETE」となるまで待ちます。

IEを閉じる
IEを閉じてます。

オブジェクトへの参照を解除
セットしたオブジェクトをそれぞれ解除しています。
不要論もあるようですが、ここはお約束で設定しています。

IEのプロセスが残る場合がある

「Quit」だけではIEのプロセスが残る場合があります。

その場合の対処方法について以下で説明していますが、これ自体を起動前の初期処理で実施することをお勧めします。

Excel VBAでIEを操作 ieのプロセスを終了させる

-ExcelでIE操作