运行时错误'91':对象变量或未设置块变量

时间:2016-06-07 10:50:03

标签: excel-vba excel-2016 vba excel

Sub amazon()

Dim x As Long
Dim y As Long
Dim doc As HTMLDocument
Dim htmTable As HTMLTable
Dim Elements As IHTMLElementCollection
Dim Element As IHTMLElement
Dim bf As String
Dim str As String
Dim af As String
Dim title As String
Dim prc()
Dim SrtTemp As Variant
Dim i As Long, q As Long
Dim j As Long
Dim n As Long
  n = Sheets("temp").Cells(Rows.Count, 5).End(xlUp).Row
For q = 7 To n
    Sheets("temp").Cells(q, 5) = ""
   Sheets("temp").Cells(q, 6) = ""
Next q
str = ""
   str = Sheets("temp").Cells(1, 4)
   With CreateObject("MSXML2.XMLHTTP")
     .Open "GET", "http://www.amazon.in/s/ref=sr_nr_n_0?fst=as%3Aoff&rh=n%3A976419031%2Cn%3A1805560031%2Ck%3A" & str & "&keywords=" & str & "&ie=UTF8&qid=1437023564&rnid=976420031", ""
     .send

     Do: DoEvents: Loop Until .readyState = 4
     Set doc = New MSHTML.HTMLDocument
     doc.body.innerHTML = .responseText

       Set Elements = doc.getElementsByClassName("s-item-container")
       x = Elements.Length
      '' Debug.Print x
       ReDim prc(0 To x)
       z = 7
       y = 0
       For Each Element In Elements
           title = Element.Children(1).innerText
          '' Debug.Print title
           If InStr(UCase(title), UCase(str)) Then
                    Sheets("temp").Cells(z, 5) = title
                    Price = Element.Children(2).Children(0).Children(0).innerText
                    If InStr(UCase(Price), UCase("offer")) = 0 Then

                        bf = Price
                       '' Debug.Print bf
                        prc(y) = Trim(CDbl(bf))
                        On Error Resume Next
                      ''  Debug.Print prc(y)
                        Sheets("temp").Cells(z, 6) = prc(y)
                    Else
             ''    bf = Element.Children(2).Children(3).Children(0).Children(3).innerText
                        bf = Price
                      ''  Debug.Print bf

                        prc(y) = Trim(CDbl(Right(bf, 9)))
                        Sheets("temp").Cells(z, 6) = prc(y)

                      ''  Debug.Print prc(y)
                    End If
                    y = y + 1
                    z = z + 1
           End If
        Next Element
        Set Elements = Nothing

        .abort
        On Error Resume Next
    End With

End Sub

当我调试我收到错误运行时错误'91':对象变量或With块变量未在此行设置title = Element.Children(1).innerText请帮我解决此问题。

我在我的Excel工作表中使用亚马逊作为宏。我正在使用excel 2016,当我调试此宏时,我收到此错误。所以请提供解决方案来解决此问题。

如果我使用Set title = Element.Children(1).innerText,那么我将收到Object required error。

我是Vba的新手,所以请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

尝试:

if not Element is nothing then
    if not Element.Children(1) is nothing then
        title = Element.Children(1).innerText
    end if
end if