2017-08-04 24 views
0

我一直在玩弄一些VBA有一段時間了,試圖檢查變量名的特定實例的HTML文檔中針對用戶輸入的值獲得元素。基本上,在HTML文檔中,我想搜索出第13個「label」標籤,並檢查它是否與excel文檔中的單元格值匹配。這裏是VBA的一部分...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 

當我運行代碼時,我總是收到「Object variable或With block variable not set」錯誤。我嘗試過調整促銷對象類型並獲得相同的錯誤,嘗試使用不同的條件(通過類名,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

的getElementsByTagName雖然返回一個集合,資格賽與項目參考返回單個元素。因此,你應該聲明你的變量如下...

Dim promo As IHTMLElement 

希望這有助於!

1

一些問題,我看到包括宣佈promo錯誤,而不是檢查promo是有效的。你能保證你總是有13個標籤嗎?我猜promoNothing,然後你指的是物體的屬性。牢記這一點,試試下面的代碼:

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