
photo credit: La caverne aux trésors A Russian Hope via photopin (license)
みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
エクセルVBAでIEによるスクレイピングをするときに便利なクラスの作り方をシリーズでお伝えしています。
前回の記事はこちら。

IEを操作するクラスIEObjectを作成しました。
…が、まだ機能としては何もないような状態なので、パワーアップしていきますよ。
まずは、今回はURLを指定してWebページへのアクセスする機能を実装していきます。
エクセルVBAでIEを操作するクラスでWebページを開くメソッドを追加するです。
では、行ってみましょう!
前回のおさらい
では、前回のおさらいからです。
まず、IEを操作するクラスIEObjectはこちら。
Public IE As InternetExplorer Private Sub Class_Initialize() Set IE = New InternetExplorer End Sub
はい、シンプルですね。
今は以下の機能だけを持っています。
- パブリック変数でInternetExplorerオブジェクトを持つIEプロパティを宣言
- コンストラクタで、その変数に新しいInternetExplorerオブジェクトをインスタンスとしてセットする
それで、確認用の標準モジュールのプロシージャがこちら。
Sub MySub() Dim ieObj As IEObject: Set ieObj = New IEObject ieObj.IE.Visible = True Stop ieObj.IE.Quit End Sub
これで、IEを表示して閉じる動作が実現できました。
IEの表示と閉じるを自動で行う
今回はIE操作では重要なWebページのアクセスなのですが、その前にやっておくことがあります。
「ieObj.IE.Visible = True」とか、「ieObj.IE.Quit」とか、なんかかっこよくないですね。
表示するとか、閉じるとかは、IEObjectオブジェクトを使用するなら、確実にする操作の場合が多いですよね。
ですから、コンストラクタとデストラクタに追加しちゃいましょう。
コンストラクタでIEを表示する
コンストラクタは前回作成しましたね。
ですから、そこにIEを表示する一文を追加してあげればOKです。
Private Sub Class_Initialize() Set IE = New InternetExplorer IE.Visible = True End Sub
3行目ですね。
デストラクタでIEを閉じる
そして、IEを閉じるのは、IEObjectが破棄されるときに行われればよいですから、デストラクタ、すなわちClass_Terminateプロシージャに記述してあげればOK!
Private Sub Class_Terminate() IE.Quit End Sub
これで、標準モジュールのプロシージャは以下のように書けちゃいます。
Sub MySub() Dim ieObj As IEObject: Set ieObj = New IEObject Stop End Sub
スッキリ!
IEを操作するクラスでWebページにアクセスする
では、本日の本題であるIEによるWebページのアクセスですね。
InternetExplorerオブジェクトでURLを指定してWebページを開くには、Navigateメソッドを使いますね。
これを行うメソッドを、IEObjectクラスに定義してあげます。
以下のように、Navigateメソッドとして追加してみました。
Public Sub Navigate(ByVal url As String) IE.Navigate url End Sub
受け取った引数urlについて、IEで開きます。
メソッドの作り方は以下の記事をご覧くださいね。

では、実行して確認してみましょう。
Sub MySub() Dim ieObj As IEObject: Set ieObj = New IEObject ieObj.Navigate "https://tonari-it.com" Stop End Sub
以下のように指定したURLのページが表示されますね。
まとめ
以上、エクセルVBAでIEを操作するクラスでWebページを開くメソッドを追加する方法をお伝えしました。
簡単ですね!
そして標準モジュールがシンプル。
さて、まだまだ「いつもの処理」があるかと思いますので、クラスのメンバーに追加していきます。
次回は、ドキュメントの取得と読み込み待ちについてお伝えします。
どうぞお楽しみに!