エクセル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はこちら。

はい、シンプルですね。

今は以下の機能だけを持っています。

  • パブリック変数でInternetExplorerオブジェクトを持つIEプロパティを宣言
  • コンストラクタで、その変数に新しいInternetExplorerオブジェクトをインスタンスとしてセットする

それで、確認用の標準モジュールのプロシージャがこちら。

これで、IEを表示して閉じる動作が実現できました。

IEの表示と閉じるを自動で行う

今回はIE操作では重要なWebページのアクセスなのですが、その前にやっておくことがあります。

「ieObj.IE.Visible = True」とか、「ieObj.IE.Quit」とか、なんかかっこよくないですね。

表示するとか、閉じるとかは、IEObjectオブジェクトを使用するなら、確実にする操作の場合が多いですよね。

ですから、コンストラクタとデストラクタに追加しちゃいましょう。

コンストラクタでIEを表示する

コンストラクタは前回作成しましたね。

ですから、そこにIEを表示する一文を追加してあげればOKです。

3行目ですね。

デストラクタでIEを閉じる

そして、IEを閉じるのは、IEObjectが破棄されるときに行われればよいですから、デストラクタ、すなわちClass_Terminateプロシージャに記述してあげればOK!

これで、標準モジュールのプロシージャは以下のように書けちゃいます。

スッキリ!

IEを操作するクラスでWebページにアクセスする

では、本日の本題であるIEによるWebページのアクセスですね。

InternetExplorerオブジェクトでURLを指定してWebページを開くには、Navigateメソッドを使いますね。

InternetExplorerオブジェクト.Navigate URL

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

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

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

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

エクセルVBAでクラスに最も簡単なメソッドを追加する方法
「初心者でもわかるエクセルVBAのクラスモジュール」をテーマにシリーズをお届けしております。今回エクセルVBAでクラスに最も簡単なメソッドを追加する方法をお伝えします。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を操作するクラスに指定秒数の待ち時間を入れるメソッドを追加する

  投稿者プロフィール

タカハシノリアキ株式会社プランノーツ 代表取締役
株式会社プランノーツ代表、コミュニティ「ノンプロ研」主宰。1976年こどもの日生まれ。東京板橋区在住。「ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ
★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ
★フォロー頂ければ嬉しいです。

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