簡體   English   中英

VBA EXCEL錯誤91對象變量或未設置塊變量

[英]VBA EXCEL error 91 object variable or with block variable not set

嗨,我有一個奇怪的問題,我得到錯誤91(“對象變量或未設置塊變量”)。 運行腳本時,我並不總是得到錯誤,只是偶爾(隨機)。 沒有成功,我已經盡了最大的努力。

我正在抓捕一個網站,以獲取某些PC組件的最新價格。

為此,我制作了一個腳本,並針對不同部分依次多次調用該腳本。 該錯誤與特定部分無關。 我在所有零件上隨機得到錯誤。 有時我可以進行所有通話而不會出現任何錯誤。

腳本(不是完整的腳本,只有您需要的):

Sub ImportUrlData(url As String)

    Dim ie As InternetExplorer
    Dim html As HTMLDocument
    Dim varListingIDElement As IHTMLElement
    Dim varShopName As String
    varShopName = ""

    Set ie = New InternetExplorer
    ie.Visible = False
    ie.navigate url

    Do While ie.readyState <> READYSTATE_COMPLETE
        DoEvents
    Loop

    Set html = ie.document

    Set varListingIDElement = html.getElementById("listing")
    varShopName = getXPathElement("/table/tbody/tr[1]/td[1]/p/a", varListingIDElement).innerText

我總是在最后一行收到錯誤:

varShopName = getXPathElement("/table/tbody/tr[" & count & "]/td[1]/p/a", varListingIDElement).innerText

(該錯誤不是在'getXPathElement'函數內部發生的,因此也無需顯示該錯誤。如果您確實想看看它,請問一下,我將其張貼在此處進行編輯。)

當我從頭到尾使用F8調試時,我永遠不會收到錯誤。 下一個通話是否有可能在上一個通話尚未結束之前就已經開始?

提前致謝!

(對不起,如果我監督過一些荷蘭語的話。)

在某些情況下,如果對象返回以任何方式未完全連接 ,則可能會遇到這樣的問題(F8始終起作用,但不能正常運行)。 很難確定是否是這種情況,並且只有在將對象設置為具有自己的初始化過程的對象時,並且該過程超出了VBA例程的控制時,才遇到此問題。

具體來說,對於您的問題,您可以采取幾種方法:

Set varListingIDElement = html.getElementById("listing")
If Not varListingIDEElement is Nothing Then
    varShopName = getXPathElement("/table/tbody/tr[1]/td[1]/p/a", varListingIDElement).innerText
End If

上面的方法應該完全防止錯誤,但是這也意味着可能沒有設置varShopName。

另一方面:

Set varListingIDElement = html.getElementById("listing")

Application.Wait(Now + TimeValue("00:00:03"))

varShopName = getXPathElement("/table/tbody/tr[1]/td[1]/p/a", varListingIDElement).innerText

這將迫使應用程序在變量的初始設置和變量的最終調用之間等待三秒鍾。 如果確實是先前流程的問題在新流程開始之前尚未完成,則可以使用此方法。 您也可以將這種方法與第一種方法結合起來,以充分利用兩者。

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM