如果页面上存在元素,请检查VBA

时间:2016-09-06 15:03:59

标签: vba excel-vba internet-explorer getelementbyid excel

我有15,000种产品,我需要知道它们是X,Y还是Z.下面的代码检查亚马逊,看看产品是否是一种XYZ。

上帝帮助我,它确实有效。唯一的例外是它搜索亚马逊不再销售的产品。然后页面上不存在我正在查找的包含我正在搜索的产品描述的元素ID,并且代码在行中断开

text = document.getelementbyID("result_0").innertext

错误“对象变量或未设置块变量”。

在继续执行其余代码之前,如何检查元素是否存在?

谢谢!

萨姆

Sub LetsAutomateIE()

Dim barcode As String
Dim rowe As Integer
Dim document As HTMLDocument
Set ie = CreateObject("InternetExplorer.Application")
Dim Element As HTMLDivElement
Dim text As String
Dim pos As Integer

rowe = 2

While Not IsEmpty(Cells(rowe, 2))

barcode = Cells(rowe, "B").Value

With ie
.Visible = False
.navigate2 "https://www.amazon.co.uk/s/ref=nb_sb_noss_1?url=search-    
alias%3Daps&field-keywords=" & barcode
Do Until ie.readyState = 4
Loop
End With

Set document = ie.document

text = document.getElementById("result_0").innerText

If InStr(text, "X") Or InStr(text, "Y") Or InStr(text,     
"Z") <> 0 Then pos = 1

If pos <> 0 Then Cells(rowe, 4) = "Y" Else Cells(rowe, 4) = "N"

rowe = rowe + 1

Wend

Set ie = Nothing

End Sub

4 个答案:

答案 0 :(得分:3)

Ryan的回答是正确的。

设置Element = document.getelementbyID(&#34; result_0&#34;)

答案 1 :(得分:2)

感谢您的解决方案。我使用如下,

If IsObject(objIE.document.getElementById("e164NumberMask")) Then
    'do true stuff
Else
    'do false stuff
End If

答案 2 :(得分:0)

你可以尝试这样的事情。

Function objectHandler(objID)

Dim TestObj As Object

On Error GoTo Handler:

Set TestObj = ObjIE.document.getElementById(objID)
objectHandler = True
Exit Function

Handler:
objectHandler = False

End Function

答案 3 :(得分:0)

如果顶级答案对其他人不起作用,则发布替代方案:

我仍然遇到运行时错误&#39; 91&#39;用IsObject()

检查后

如果ObjIE是一个InternetExplorer对象,IsObject()工作正常,但我使用的是InternetExplorerMedium对象,并且必须使用它进行验证,因为它返回了一个无对象:

If Not objIE.document.getElementById("e164NumberMask") Is Nothing Then
    'do true stuff
Else
    'do false stuff
End If