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で操作しましょう!

ノンプログラマーがプログラミングを学ぶ理由

ノンプログラマーがプログラミングを使えるようになると、「仕事の幅」が広がります。

日常生活にたとえると「車の運転」のイメージです。

多くの人は、大人になると自動車教習所に通って、運転の練習をしますね。F1レーサーやタクシードライバーなどの「プロ」になるわけではないのに。

車の運転ができれば、遠いところへ、速く・ラクに移動できて「生活の幅」が広がるからです。

プログラミングができるようになれば、今の仕事を速く・ラクに片づけて、「仕事の幅」を広げることができます。

「プロ」を目指す必要はありません。今の仕事をより豊かにするための「手段」、それがプログラミングです。

1週間オンライン無料体験あり
全国6教室で無料体験会