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操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。
コメント