我一直在玩一些VBA一段时间,尝试根据用户输入的值检查HTML文档中标记名称的特定实例。基本上,在HTML文档中,我想搜索第13个“标签”标签,并检查它是否与excel doc中的单元格值匹配。这是VBA的一部分......
Do Until Not IE.Busy And IE.readyState = 4
DoEvents
Loop
Dim promo As IHTMLElementCollection
Set promo = IE.Document.getElementsByTagName("label")(12)
If InStr(promo.innerText, Range("E5").Value) = 0 Then
ActiveSheet.Range("D" & i) = "Yes"
Else
ActiveSheet.Range("D" & i) = "No"
End If
运行代码时,我一直收到“对象变量或未设置块变量”错误。我已经尝试调整促销对象类型并获得相同的错误,尝试使用不同的标准(按类名,按ID等)设置促销变量,我只是无法通过错误。以下是HTML的示例,您可以看到有多个“标签”标签,我只需要与一个标签进行比较然后继续...
<div id="formHeader">Telephone:</div>
<div id="formContent">Telephone Type: <br/>
<label class="formResult">HOME</label> <br/>
Telephone Consent: <br/>
<label class="formResult">Y</label><br/>
Country Code: <br/>
<label class="formResult">1</label> <br/>
Telephone: <br/>
<label class="formResult">555 - 555-5555</label> <br/>
Extension: <br/>
<label class="formResult"></label> <br/>
</div>
我对VBA并不是那么好,所以我想这可能是一个非常简单的修复,但我只是难倒...任何帮助都会非常感激。谢谢。
答案 0 :(得分:1)
我看到的一些问题包括错误地声明promo
而不检查promo
是否有效。你能保证你总有13个标签吗?我猜promo
是Nothing
然后你引用那个对象的属性。记住这一点,请尝试以下代码:
Do Until Not IE.Busy And IE.readyState = 4
DoEvents
Loop
Dim promo As IHTMLElement
Set promo = IE.Document.getElementsByTagName("label")(12)
If Not promo Is Nothing Then
If InStr(promo.innerText, Range("E5").Value) = 0 Then
ActiveSheet.Range("D" & i) = "Yes"
Else
ActiveSheet.Range("D" & i) = "No"
End If
End If
答案 1 :(得分:0)
虽然getElementsByTagName返回一个集合,但使用item限定引用会返回一个元素。因此,您应该声明您的变量如下...
Dim promo As IHTMLElement
希望这有帮助!