[英]VBA error 91: Object variable or With block variable not set (Excel 2013)
[英]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.