2
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

デバッグすると、Run-time error '91': Object variable or With block variable not set at this line title = Element.Children(1).innerText というエラーが表示されます。この問題の解決を手伝ってください。

Excel ワークシートでマクロとして amazon を使用しています。Excel 2016 を使用していますが、このマクロをデバッグするとこのエラーが発生します。この問題を解決するための解決策を提供してください。

Set title = Element.Children(1).innerText を使用すると、Object required エラーが発生します。

私はVbaの初心者なので、この問題を解決するのを手伝ってください。

4

1 に答える 1