VBA

【VBAでIE操作】起動済み画面のHTMLを取得する(Webスクレイピング)

ねぇもりさん、VBAでスクレイピングをしたいんだけど、目的の画面にたどりつくまでが大変なんだよね・・・
もり
もり
それなら、先に画面を開いておけばいいんだよ!
起動済みの画面のHTMLを取得する方法を紹介するね

VBAでスクレイピングをしたい!と思って、[VBA IE操作]というキーワードで検索して出てくる記事は、こんな流れのが多いですよね。

  1. IEを起動
  2. 目的のURLにアクセス
  3. IDとパスワードを入力してログイン
  4. HTMLを読み込む
  5. スクレイピング開始

HTMLを読み込んでスクレイピングを開始するまでが大変・・・そんなときは、先に目的の画面を開いておき、そのHTMLを取得してしまいましょう!

こちらの三流君を参考にさせていただきました。

TypeNameとShell.Applicationを使い起動済みのIEを探す

起動済みの画面のHTMLを取得する

※この記事はVBAでIE操作をしたことがある人向けに書いているので、VBA全般の解説は省略しています。

こちらのWebサイトを使用して解説していきます。

コミュニティ「ノンプログラマーのためのスキルアップ研究会」についてのお知らせ

コード

参照設定で下記の2つを使用します。

  • Microsoft HTML Object Library
  • Microsoft Internet Controls

マクロの使い方

①titleの設定
上記コードの変数targetTitleに、対象画面のtitleの文字列を設定します。

下記のいずれかの方法で、対象画面のHTMLを確認します。

  • Ctrl+U
  • マウス右クリック→ソースの表示

titleタグを探しましょう!(先頭の方にあるはず)
<title>~</title>

②操作対象の画面をIEで起動しておく

Internet explorerで対象画面にアクセスしておきます
ログインが必要なシステムの場合は、ログイン処理もしておきます

gethtml2

③マクロを実行

これで、対象画面のHTMLが変数htmlDocに格納できたので、あとは自由にVBAで操作しましょう!