みなさん、こんにちは!
タカハシ(@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ページを開くメソッドを追加する方法をお伝えしました。
簡単ですね!
そして標準モジュールがシンプル。
さて、まだまだ「いつもの処理」があるかと思いますので、クラスのメンバーに追加していきます。
次回は、ドキュメントの取得と読み込み待ちについてお伝えします。
どうぞお楽しみに!
連載目次:エクセルVBAでIEを操作するクラスを作る
エクセルVBAでInternetExplorerを操作してWebスクレイピング、まだまだ現役で必要となる現場もあるでしょう。このシリーズでは、IEを使ったスクレイピングをするときに便利なクラスの作り方をお伝えします。- エクセルVBAでIEを操作するもっとも簡単なクラスを作成する方法
- エクセルVBAでIEを操作するクラスでWebページを開くメソッドを追加する
- エクセルVBAでIEを操作するクラスに読み込み待ちとドキュメント取得の機能を追加する方法
- エクセルVBAでIEを操作するクラスにname属性で取得した要素から内容を取り出すプロパティを作成
- エクセルVBAでIEを操作するクラスにリンクテキストでa要素を探してリンクする方法
- エクセルVBAでIEを操作するクラスにテーブルのデータを取得するメソッドを追加する方法
- エクセルVBAでIEを操作するクラスにWebページのテーブルデータをシートに書き出すメソッドを追加する
- エクセルVBAでIEを操作するクラスに検索入力&ボタンクリックのメソッドを追加する方法
- エクセルVBAでIEを操作するクラスにログイン処理をするメソッドを追加する方法
- エクセルVBAによるIEを操作するクラスに指定秒数の待ち時間を入れるメソッドを追加する