ExcelVBA

VBAでIE操作「JavaScriptを強制発火する」【Excelマクロ】

IEでテキストボックス入力しても認識できない

Excel VBAマクロでIEを自動制御する際、SendKeysValueで値を反映したにもかかわらず、
submitボタンを押下すると、入力が反映されていたにも関わらず認識できていないケースはないでしょうか。

原因はJavaScriptが正常に動作していないからです。
ヤフオクの出品ページではその問題が発生します。ヤフオクの出品ページをサンプルに解決方法を記載します。

JavaScript(JS)を強制発火させる

'■ヤフオク出品ページでJavaScriptを強制発火する
Public Function Call_sample_javascript_initEvent()
    Dim objIE As Object
    Dim evt As Object
    
    '■IE生成→指定URLへ飛ぶ
    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = True
    objIE.navigate "https://auctions.yahoo.co.jp/sell/jp/show/submit?category=0"
    Call_IE_WaitTime
    
    Set evt = objIE.document.createEvent("HTMLEvents")
    evt.initEvent "change", True, False
    
    '■送料落札者負担
    objIE.document.getElementById("shipping_other_check1").Click
    objIE.document.getElementById("auc_shipname_standard1").Value = "定形郵便"
    objIE.document.getElementById("auc_shipname_standard1").dispatchEvent evt
    
    '■送料
    objIE.document.getElementById("auc_shipname_uniform_fee_data1").Value = "84"
    objIE.document.getElementById("auc_shipname_uniform_fee_data1").dispatchEvent evt
End Function

注意点

  • JavaScriptの強制発火は以下のようなコードを作成します。
    Set evt = objIE.document.createEvent("HTMLEvents")
    evt.initEvent "change", True, False

    objIE.document.getElementById("xxxx").dispatchEvent evt

その他

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

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

 

コメント

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