DOMを変数で渡してinnerTextを得る方法
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
Message#1 2015年7月13日(月)19時37分 From: pyonko | 返事 削除 変更 |
Excelに記述したURLリストに従って、WEBページの更新有無 を定期的にチェックするVBAを作成中です。 ページごとに、着目している情報が掲載されているDOM要素 を次のような感じで予め特定しました。 Aサイト:objIE.Document.body.all.tags("ul")(3).innerText Bサイト:objIE.Document.body.all.tags("table")(3).all(61).innerText Cサイト:objIE.Document.body.all.tags("div")(10).innerText これらも、URLリストの隣の列に記述しております。 (sh2:URL,DOMを記述したSheet2とします) サイトが沢山ある場合、ループで回し、例えば For i = 2 To sh2.Cells(Rows.Count, 1).End(xlUp).Row Step 1 '第一列目(A列)にURLリストがあるとします Select Case i Case 1 sh1.Cells(i, 2) = objIE.Document.body.all.tags("ul")(3).innerText Case 2 sh1.Cells(i, 2) = objIE.Document.body.all.tags("table")(3).all(61).innerText Case 3 sh1.Cells(i, 2) = objIE.Document.body.all.tags("div")(10).innerText End Select Next などとしていますが、このように右辺に直接個々の i 毎にDOMの連なりを記述する のではループの意味がなくなってしまうので、シートのsh2.Cells(i, 2)に記述されたobjIE.Document.body.all.tags("ul")(3).innerTextを使って sh1.Cells(i, 2) = objIE.sh2.Cells(i, 2) のように記述できないでしょうか? DOM要素でなく、id属性をリストに入れているのであれば、 sh1.Cells(i, 2) = objIE.Document.body.getElementById("id名") が使えるので、 sh1.Cells(i, 2) = objIE.Document.body.getElementById(sh2.Cells(i, 2)) と、( )内に変数を渡すことが可能と思われます。「.」でつなげていく方法では、 変数にできなくて困っています。 アイデアがあれば、ぜひ教えて下さい。 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降