for eachでtd idを取得してそれぞれ取得するところまでできたのですが、取得したループごとに変わる一時的な値をifの外で使うために、innertextを文字として変数に代入したいです。
下記のコードは間違っていますがイメージを伝えるためにあえて書きます。
HTMLの一部は下記のような感じです。
HTML
1<td id="ABC">12345</td> 2<td id="ABC">54321</td> 3<td id="ABC">13579</td> 4<td id="ABC">02468</td>
VBA
1 2Dim ExampleID as long 3 4For Each objtag In objIE.document.getElementsByTagName("td") 5if instr(objtag.outerHTML, "ABC") then 6ExampleID = objtag.innertext 7end if 8 9debug.print ExampleID 10 11Next 12
今回の場合if文の外で使いたい変数に入る値は1回目のループは"12345" 2回目"54321"となります。
この場合変数"ExampleID"をif文の外に書いたら当然、全体のobjtag.innertextを取得してしまいます。
そこで、下記のようにしてみました。
VBA
1Dim ExampleID as long 2 3For Each objtag In objIE.document.getElementsByTagName("td") 4if instr(objtag.outerHTML, "ABC") then 5ExampleID = objtag.innertext.value 6end if 7 8debug.print ExampleID 9 10next
.valueをつけてみると、使用不可なようでエラーがでました。
うまく説明できているかわからないですが不明点あれば都度追記させていただきます。
無知すぎてとても初歩的な事に気づいていないだけなのに、みなさまのお知恵をお借りすることになって申し訳ないのですがお答えいただけると幸いです。。。
追記:
td id重複の件ですが<table id="Area">内のtbody→tr→tdです。
コードを一部変えて下記に模写します。
HTML
1<tr> 2<td ~~~ id="Number">"取得したいinnertext1"</td> 3<td ~~~ id="Name">"取得したいinnertext2"</td> 4<td ~~~ id="address">"取得したいinnertext3"</td> 5</tr> 6 7<tr> 8<td ~~~ id="Number">"取得したいinnertext4"</td> 9<td ~~~ id="Name">"取得したいinnertext5"</td> 10<td ~~~ id="address">"取得したいinnertext6"</td> 11</tr>
上記のコードはダブルクォーテーション内以外そのままのものを書きました。
謎の~~~があって困ってます。
よければそれについても教えて頂きたいです。
それでは本題に戻りますと、
"取得したいinnertext"をfor eachでループごとに抜いていくのですが、
Code
1<td ~~~ id="address">のinnertext3が例えば"東京"だった場合に 2<td ~~~ id="Number">内の"取得したいinnertext1"を含めそれ以降の<td ~~~ id="Number">の 3innertextも取得しようとしています。 4おそらく、すでにinnertext3まで処理が進んでしまっているためか、うまく動かず、 51に戻って取得するにはなにか工夫が必要だと思い、今回はそれぞれnumber,name,addressを 6都度、変数に入れておいて、 7innertext3が"東京"だった場合に呼び出そうと考えました。 8 9現状だとinnertext3が"東京"だった場合にそれ以降の<td ~~~ id="Number">のinnertext4からの 10取得になってしまいます。
わかりにくい質問で申し訳ないです。