エクセルVBAでIEを操作するクラスでWebページを開くメソッドを追加する


navigate

photo credit: La caverne aux trésors A Russian Hope via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

エクセルVBAでIEによるスクレイピングをするときに便利なクラスの作り方をシリーズでお伝えしています。

前回の記事はこちら。

エクセルVBAでIEを操作するもっとも簡単なクラスを作成する方法
エクセルVBAでInternetExplorerを操作してWebスクレイピング…けっこういつも同じ処理を作ります。そんなときには、クラスで部品化が有効です。まずは、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メソッドを使いますね。

InternetExplorerオブジェクト.Navigate URL

これを行うメソッドを、IEObjectクラスに定義してあげます。

以下のように、Navigateメソッドとして追加してみました。

Public Sub Navigate(ByVal url As String)
    IE.Navigate url
End Sub

受け取った引数urlについて、IEで開きます。

メソッドの作り方は以下の記事をご覧くださいね。

エクセルVBAでクラスに最も簡単なメソッドを追加する方法
「初心者でもわかるエクセルVBAのクラスモジュール」をテーマにシリーズをお届けしております。今回エクセルVBAでクラスに最も簡単なメソッドを追加する方法をお伝えします。Subプロシージャを使いますよ。

では、実行して確認してみましょう。

Sub MySub()
    
    Dim ieObj As IEObject: Set ieObj = New IEObject
    ieObj.Navigate "https://tonari-it.com"
    
    Stop
    
End Sub

以下のように指定したURLのページが表示されますね。

IEクラスでWebページを開く

まとめ

以上、エクセルVBAでIEを操作するクラスでWebページを開くメソッドを追加する方法をお伝えしました。

簡単ですね!

そして標準モジュールがシンプル。

さて、まだまだ「いつもの処理」があるかと思いますので、クラスのメンバーに追加していきます。

次回は、ドキュメントの取得と読み込み待ちについてお伝えします。

エクセルVBAでIEを操作するクラスに読み込み待ちとドキュメント取得の機能を追加する方法
エクセルVBAでIEを操作する便利なクラスの作り方をお伝えしています。今回は、エクセルVBAでIEを操作するクラスに読み込み待ちをするメソッドと、ドキュメント取得をするプロパティと処理を追加します。

どうぞお楽しみに!

連載目次:エクセルVBAでIEを操作するクラスを作る

エクセルVBAでInternetExplorerを操作してWebスクレイピング、まだまだ現役で必要となる現場もあるでしょう。このシリーズでは、IEを使ったスクレイピングをするときに便利なクラスの作り方をお伝えします。
  1. エクセルVBAでIEを操作するもっとも簡単なクラスを作成する方法
  2. エクセルVBAでIEを操作するクラスでWebページを開くメソッドを追加する
  3. エクセルVBAでIEを操作するクラスに読み込み待ちとドキュメント取得の機能を追加する方法
  4. エクセルVBAでIEを操作するクラスにname属性で取得した要素から内容を取り出すプロパティを作成
  5. エクセルVBAでIEを操作するクラスにリンクテキストでa要素を探してリンクする方法
  6. エクセルVBAでIEを操作するクラスにテーブルのデータを取得するメソッドを追加する方法
  7. エクセルVBAでIEを操作するクラスにWebページのテーブルデータをシートに書き出すメソッドを追加する
  8. エクセルVBAでIEを操作するクラスに検索入力&ボタンクリックのメソッドを追加する方法
  9. エクセルVBAでIEを操作するクラスにログイン処理をするメソッドを追加する方法
  10. エクセルVBAによるIEを操作するクラスに指定秒数の待ち時間を入れるメソッドを追加する

タイトルとURLをコピーしました