
photo credit: BONGURI 20181013 Denpark 8 via photopin (license)
みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
エクセルVBAでInternetExplorerを操作してWebスクレイピング!
IEはMicrosoftさんも使用してくれるなとお達しがありましたが、環境によってはしばらく頑張っていただく必要がありますかね。
それで、実際に使用するときにはIEオブジェクトを生成したり、指定のURLにアクセスしたり、Documentオブジェクトを取得したり、読み込み待ちをしたり…
けっこういつも同じことをしているんですよね。
そんなときには、部品化ですよ、部品化!
そして、部品化をするなら、クラスですよ、クラス!
ということで、今回からシリーズで、エクセルVBAでIEを使ったスクレイピングをするときに便利なクラスの作り方をお伝えしていきます。
なお、IEの基本操作については以下の記事からはじまるシリーズに詳しく書いていますので、そちらも参考にしてくださいね。

まず今回は、エクセルVBAでIEを操作するもっとも簡単なクラスを作成する方法をお伝えします。
では、行ってみましょう!
IEによるスクレイピングの準備
IEによるスクレイピングをする準備を進めていきましょう。
- InternetExplorerの操作をするには「Microsoft Internet Controls」
- HTMLの操作をするには「Microsoft HTML Object Library」
というそれぞれのライブラリを参照設定しておく必要があります。
以下の記事にこれらのライブラリの参照設定について詳しく書いておりますので、忘れずにやっておきましょうね。

IEを操作するクラスを作る
では、さっそくIEを操作するクラスを作成していきましょう。
クラスを作成する手順は以下の記事で詳しく紹介していますので、わからない方は参考にしながら進めてみてください。

さて、まずVBEの「挿入」メニューの「クラスモジュール」からクラスモジュールを挿入します。
次に、挿入したクラスモジュールについて、プロパティウィンドウのオブジェクト名を「IEObject」としましょう。
これがクラス名になります。
これで、クラス完成っす(空っぽですが)!
以下のようなプロシージャを実行すると…
Sub MySub() Dim ieObj As IEObject: Set ieObj = New IEObject Stop End Sub
ほら、Stop時にローカルウィンドウを見ると、ちゃんとIEObjectのインスタンスが生成できたことが確認できますよね。
InternetExplorer型のプロパティを定義する
さて、そんなIEObjectクラス。
中身は空っぽです。メンバーとして何を持っておくべきでしょうか?
大前提として、InternetExplorerを操作できる必要がありますよね。
そいういうのは、ひとまずパブリック変数として宣言しておいて、プロパティとして持っておけばOKっす。
そうすれば、IEObjectクラスはその機能を内包できるようになります。
Public IE As InternetExplorer
IEObjectクラスでIEを表示する
そして、クラスモジュールで宣言したパブリック変数は、インスタンスを生成した際にはプロパティとして使用できます。
つまりIEプロパティを経由して、IEの操作ができるはず…
では、まずはIEを表示してみましょう。
標準モジュールで以下プロシージャを作って実行してみます。
Sub MySub() Dim ieObj As IEObject: Set ieObj = New IEObject ieObj.IE.Visible = True Stop End Sub
VisibleプロパティはTrueにすれば、InternetExplorerオブジェクトを表示しますね。
実行すると、以下のように空っぽですがIEが表示されます。
IEObjectクラスでIEを閉じる
では、次にIEObjectのIEプロパティを経由して、IEを閉じてみましょう。
IEを閉じるには、Quitメソッドでしたね。
以下プロシージャを実行すると、Stopから再開したときにIEが閉じることが確認できますね。
Sub MySub() Dim ieObj As IEObject: Set ieObj = New IEObject ieObj.IE.Visible = True Stop ieObj.IE.Quit End Sub
まとめ
以上、エクセルVBAでIEを操作するもっとも簡単なクラスを作成する方法をお伝えしました。
IEの操作方法とクラスの使い方がそれぞれなんとなくわかっていれば、たぶん大丈夫。
もしわからない方は、記事内で紹介した記事で復習していきましょう。
次回は、コンストラクタとデストラクタを作成していきます。
どうぞお楽しみに!