getElementsByTagName与HTML中的多个实例

通过VBA读取一些HTML有点问题,似乎无法find任何线程在这里已经能够解决问题。 这里是VBA的一小块,除了最后一个(最重要的)步骤,它告诉我HTML中是否存在一个特定的值。

Do Until Not IE.Busy And IE.readyState = 4 DoEvents Loop promo = IE.Document.getElementById("formContent").getElementsByTagName("label")(1) If InStr(promo.innerText, Range("E5").Value) = 0 Then ActiveSheet.Range("D" & i) = "No" Else ActiveSheet.Range("D" & i) = "Yes" End If Next i IE.Quit 

这里是HTML,我试图检查范围E5中的值是否与其中一个标记中的值相匹配(这将取决于E5的值而改变)…我似乎无法使其通过这些标签,并告诉我,如果E5匹配…难倒。

  <div id="formHeader">Personal Information:</div> <div id="formContent"> Salutation:<br> <label class="formResult">MR</label> <br> First Name:<br> <label class="formResult">John</label> <br/> Middle Name:<br> <label class="formResult">P</label> <br/> Last Name:<br> <label class="formResult">Smith</label> <br> Preferred Name:<br> <label class="formResult">Johnny</label> <br> Date of Birth: <br> <label class="formResult">Mar 31, 1985</label> <br/> Gender:<br> <label class="formResult">M</label> <br/> Language:<br> <label class="formResult">E</label> <br/> </div> <br/> <div id="formHeader">Mailing Address:</div> <div id="formContent">Address Type: <br/> <label class="formResult">HOME</label> <br/> Mail Consent: <br/> <label class="formResult">Y</label> <br/> Address 1: <br/> <label class="formResult">101 Smith St</label> <br/> Address 2: <br/> <label class="formResult"></label> <br/> City: <br/> <label class="formResult">Happytown</label> <br/> 

任何帮助将不胜感激,谢谢!

迭代所有标签元素的简单循环是:

 Dim promos As IHTMLElementCollection Set promos = ie.Document.getElementById("formContent").getElementsByTagName("label") For Each promo In promos If InStr(promo.innerText, Range("E5").Value) = 0 Then ActiveSheet.Range("D" & i) = "No" Else ActiveSheet.Range("D" & i) = "Yes" End If Next 

但是,如果find该值,则需要退出循环。

逻辑上,将文本设置为“否”,如果find该值,则仅将其更改为“是”。 然后退出。

 ActiveSheet.Range("D" & i) = "No" Dim promos As IHTMLElementCollection Set promos = ie.Document.getElementById("formContent").getElementsByTagName("label") For Each promo In promos If InStr(promo.innerText, Range("E5").Value) <> 0 Then ActiveSheet.Range("D" & i) = "Yes" Exit For End If Next