自動化・スクレイピングの第一歩!Excel VBAでYahoo検索してみよう!【サンプル有り】

はじめに

前回の記事でExcelのVBAマクロからIE(インターネットエクスプローラー)を操作し、HTMLを取得してWebページの内容から必要な内容を取り出す方法をご説明いたしました。

今回は、VBAマクロから操作したIEでYahoo!検索を実行する方法をご紹介します。

検索サイトというのは身近な存在ですが、実は立派なWebアプリケーションです。

つまり、ExcelやWordと同じアプリケーションソフトであり、これをVBAマクロによって自動的に操作していることになります。徐々に自動化に近づいてきた気がしますね!

Excel VBAでYahoo検索してみよう!本記事の目的

本記事では前回の記事をベースにVBAマクロから操作したIEでYahoo!検索を実行する方法をご紹介します。

前回に続き、まずは特定のサイトURL(この場合、Yahoo!)からサイトを開き、サーチボックスに検索ワードを入れます。その過程で、前回ご説明したHTMLの解析が必要になります。

この方法を理解すれば、例えばログインが必要な会員制サイトのIDとパスワードを入力することでログインを自動化することができるでしょう!次回以降、より実践的な方法をご説明したいと思いますが、まずは今回の基本を十分ご理解ください。

Excel VBAでYahoo検索してみよう!処理の流れ

処理の流れとしては、

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

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

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

表示されたサイトのHTMLを取得する←前回ココまで!

取得したHTMLを解析し、検索ワードの欄に検索したいワードを入力する

詮索ワードを入力した状態で検索ボタンをクリックする

という流れになります。

Excel VBAでYahoo検索してみよう!関数・プロパティなど

getElementsByID
取得したHTMLオブジェクトからID名で指定して要素を取得します。前回ご紹介したgetElementsByClassNameはIDではなくクラス名で要素指定します。
前回に続きこれもHTMLやCSSにある程度詳しくないとよくわからないと思います。次回以降、説明する機会を作りたいと思いますので、現時点では「ウエブの内容から取ってきたい場所を指定しているところ」程度にざっくりご理解いただいておけばよいかと思います。

getElementById(“srchbtn”).Click
上記のgetElementsByIDで指定した要素を文字通りクリックします。当然ながらクリックできない要素をクリック指定することはできませんのでご注意ください。

Excel VBAでYahoo検索していみよう!のサンプルコード

ということでサンプルコードです!
Yahoo!検索で弊ブログの検索結果を表示しています。まだまだ努力が足りませんね汗

Sub testIE()

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

    myIE.Visible = True

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

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


  '↓今回追加された分はココから!↓

  Dim myhtml As HTMLDocument 
    Set myhtml = objIE.document 

  myhtml.getElementById("srchtxt").Value = "自動化ラボっ!"
    myhtml.getElementById("srchbtn").Click

End Sub

終わりに

本記事ではウエブページからHTMLを取得しオブジェクトに格納したあとHTML構文を解析し、クラス指定して所定の要素を抜き出すところまでをご説明した前回に続いて、Webページに特定の内容を入力して送信し結果を得るところまでご説明しました。

冒頭でも述べましたが、これは(Web)アプリケーションをプログラム側から動かしている点で、自動化と呼べると思います。徐々に自動化が見えてきましたね!

この調子でどんどんVBAマクロによる自動化のスキルを向上していきましょう!