IEでテキストボックス入力しても認識できない
Excel VBAマクロでIEを自動制御する際、SendKeysやValueで値を反映したにもかかわらず、
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
- こちらのコードだけでは動作しません。
下記の読み込み待ちのパーツ化したコードが必要です。
VBAでIE操作「ブラウザの読込待ち」処理をパーツ化する【エクセルマクロ】 - 上記ページはログイン状態前提です。ログインしていないと正常に動作しません。
- プレミアム会員でない場合は、上記コードでは動作しません。



コメント