ねぇもりさん、VBAでスクレイピングをしたいんだけど、目的の画面にたどりつくまでが大変なんだよね・・・
もり
それなら、先に画面を開いておけばいいんだよ!
起動済みの画面のHTMLを取得する方法を紹介するね
起動済みの画面のHTMLを取得する方法を紹介するね
VBAでスクレイピングをしたい!と思って、[VBA IE操作]というキーワードで検索して出てくる記事は、こんな流れのが多いですよね。
- IEを起動
- 目的のURLにアクセス
- IDとパスワードを入力してログイン
- HTMLを読み込む
- スクレイピング開始
HTMLを読み込んでスクレイピングを開始するまでが大変・・・そんなときは、先に目的の画面を開いておき、そのHTMLを取得してしまいましょう!
こちらの三流君を参考にさせていただきました。
TypeNameとShell.Applicationを使い起動済みのIEを探す
Contents [hide]
起動済みの画面の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で対象画面にアクセスしておきます
ログインが必要なシステムの場合は、ログイン処理もしておきます
③マクロを実行
これで、対象画面のHTMLが変数htmlDocに格納できたので、あとは自由にVBAで操作しましょう!