Internet Explorer自動操作

VBAでIE操作「テキストボックスへ入力する」【エクセルマクロ】

VBAでIEを起動し、Webページ内のテキストボックスへ値を反映する方法です。
VBAマクロを理解している人であれば、特に難しくはありません。
id要素もしくはName要素を判定し、代入するのみです。

テキストボックス反映するサンプルコード

'■InternetExplorerでテキストボックス テキストエリアに値を反映
Sub sample_IE_textbox_textarea()
    Dim objIE As InternetExplorer
    
    '■IEを起動
    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = True
 
    '■指定したURLに飛び、Webサイトの表示を待つ
    objIE.navigate "https://www.vba-create.jp/"
    Call Call_IE_WaitTime
    
    '■検索ボックスへ値を反映(Name要素の場合)sの1番目=(0)
    objIE.document.getElementsByName("s")(0).Value = "マクロテスト"
    
    '■検索ボックスへ値を反映(id要素の場合)※当方のサイトでは存在しません
    objIE.document.getElementById("search").Value = "マクロテスト"
    
    '■検索ボタンをクリック
    objIE.document.getElementsByClassName("search-submit")(0).Click
End Sub

'■HTMLサンプル(name="s"があり、name要素が存在)
<aside id="search-4" class="widget widget-sidebar widget-sidebar-scroll widget_search"><form class="search-box input-box" method="get" action="https://vba-create.jp/"><input type="text" placeholder="サイト内を検索" name="s" class="search-edit" aria-label="input" value=""><button type="submit" class="search-submit" aria-label="button"><span class="fa fa-search" aria-hidden="true"></span></button></form></aside>

Google検索する場合は?

上記は当サイトでの「指定キーワード検索」を想定しています。
検索といえばGoogleですが、Googleの場合は検索キーワードを含んだURLを事前に生成し、
「objIE.navigate」で飛んだ方が早いです。(Google検索はデータをサーバに渡す形式がGETの為)

詳細は下記の記事を参考にしてください。
VBAでIE操作「Google検索する(GET送信)」【エクセルマクロ】

注意点

毎度おなじみですが、Call_IE_WaitTimeの処理はこちらを参照ください。

 

その他

Internet Explorerを使用して、Webスクレイピングは敷居が高い風に捉えられますが、
上記のように、パーツ化して組み合わせ処理するだけです。

Web上のデータを触りたい要望は会社様でも個人様でも多いと思います。
VBA IE操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。

 

コメント

タイトルとURLをコピーしました