自動化・スクレイピングの第一歩!Excel VBAでWebブラウザを操作する方法【サンプル有り】

はじめに

最近、自動化ブームに伴ってエンジニア以外の人達も「スクレイピング」とか「クローリング」という言葉をよく使っているのを耳にします。インターネットでは日々様々な情報が更新されていますが、その全てを手作業で拾ってくるのは大変な労力がかかると思います。

「いつもアクセスしているあのサイトの更新情報を自動で拾ってくることができたら・・」とおもったことはないでしょうか?そういうあなたにはうってつけの方法を本記事ではご紹介できると思います。

Excel VBAでWebブラウザを操作する方法を紹介する本記事の目的

本記事ではまず、ExcelのVBAマクロを用いて特定のサイトを表示させるプログラムを示します。

特定のサイトと言ってもURLがわかればどんなサイトでも基本的には表示できます。

ただ、ログイン情報が必要な会員向けサイトのような場合は本記事のプログラムでは扱えません。

その場合、もう少し手の混んだプログラムが必要になります。

まずは基本中の基本となるブラウザの表示と、表示させたいサイトへ遷移する方法を学びましょう。

Excel VBAでWebブラウザを操作する方法を実行する処理の流れ

処理の流れとしては、

IE(インターネットエクスプローラー)オブジェクトを作成し、表示する

navigateメソッドを使い希望のサイトへ遷移する

サイトが表示されるまで読み込みを待つ

という流れになります。

Excel VBAでWebブラウザを操作に使用する関数・プロパティなど

オブジェクト.navigate メソッド

作成し表示したIE(インターネットエクスプローラー)オブジェクトを指定のURLに遷移させるメソッド。
あまりいい使用法の例がサイトに乗っていないのですが、引数として””(ダブルクオーテーション)で遷移したいURLを指定します。

Do while ~ Loop 文

IEがサイトを読み込んでいる間、待機する処理。環境などによってIEの読み込み速度は異なるため、正しく表示されるまで(READYSTATE_COMPLETEまで)待機することにしましょう。

Excel VBAでWebブラウザを操作する方法のサンプルコード

Sub testIE()

    Dim objIE As InternetExplorer
    Set objIE = CreateObject("Internetexplorer.Application")

    objIE.Visible = True

    objIE.navigate "https://www.yahoo.co.jp/"

    Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
        DoEvents
    Loop

End Sub

終わりに

本記事ではスクレイピングの触りとしてIEを操作し、特定のサイトを表示させるところまでをご説明しました。

シンプルにサイトを表示させるだけならそれほど難しくないと感じたはずです。

しかし、これではあくまで表示させただけであり、特に生産的な使い方ができたとは言い難いと思います。

今回の基礎を土台に、これから数回に渡りVBAマクロからIEを操ってネット上の情報を取得する方法をご説明していきたいと思います。日々の不毛なサイトチェック業務をVBAで自動化して生産性向上を目指しましょう。