VBAでIEを操作し、id・nameが変わっても対応できるようにするには?
未読分:2件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#2 2014年10月7日(火)10時04分 From: 管理人 | 返事 削除 変更 |
yahooなどが一時期name属性またはid属性の値をアクセスするたびに変えていましたね。 ただ、システムで生成している以上法則を掴めばそこまで難しくありません。 例えば、固定でない場合よくあるのが以下のような形です。 <input type="text" name="nameid542559" /> <input type="text" name="nameid565421" /> name属性の値は異なりますが、「nameid******」(*は6桁固定)という法則が伺えます。 仮に「nameid」が一意のキーワードであれば、 For Each tag In IE.document.getElementsByTagName("input") If InStr(Tag.outerhtml, "nameid") > 0 Then (処理) End If next で取得できます。 ポイントはどのような法則で生成されているかということと、一意のキーワードが存在するかということになります。 ここを抑えておけば、たいていのデータは抽出できますので、参考にがんばってみてください。 |
Message#1 2014年10月3日(金)08時58分 From: 一の情 | 返事 削除 変更 |
VBAでIEを操作し、HTML内のinputタグデータを取得しようと思っているのですが、id・name属性が固定ではありません。 アクセスするたびに変化するので、決め打ちができない状況です。 inputタグをループさせるには以下のような処理で行いますが、途中でエラーがでてしまいます。 For Each tag In IE.document.getElementsByTagName("input") '処理 next 現在は、「On Error Resume Next」でエラー回避していますが、どのような処理をすればうまくデータ取得できますでしょうか? id・name属性が固定ではない場合はどのような処理が一番適切か教えていただけないでしょうか? よろしくお願いいたします。 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降