Переменная объекта или переменная блока не установлена, и данные не попадают в правые столбцы - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть две проблемы, и я не был уверен, чтобы опубликовать две темы, так как я не хотел, чтобы меня вызывали для двойной публикации. Я пытался их починить уже несколько недель, но просто не могу разобраться с ними. Я новичок в VBA и обладаю очень ограниченными знаниями.

Код выполняется некоторое время, а затем вылетает, и я получаю первое сообщение об ошибке, эта ошибка может выделить любую часть кода, поэтому я не был уверен, какой к публикации.
1ST = "Переменная объекта или с переменной блока не установлена" и код

Во-вторых, я не могу получить цены в нужных столбцах, он пропускает некоторые цены, а также размещение данных в. Я приложил URl для файла Скачать

Private Sub EbaySearch_Click()
    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")
    With ie
        .Visible = True
        .navigate2 Sheets("Sheet1").Range("B1").value & Replace(Worksheets("Sheet1").Range("C1").value, " ", "+")
        Do
            DoEvents
        Loop Until ie.readyState = READYSTATE_COMPLETE
        Dim doc As HTMLDocument
        Set doc = ie.Document
        While ie.readyState <> 4
        Wend
        Do
            Dim i As Integer
            For i = 0 To 500
                Range("A3").Offset(i).value = doc.getElementsByClassName("vip")(i).href ' URL
                Range("A3").Offset(i, 1).value = doc.getElementsByClassName("lvtitle")(i).innerText ' TITLE
                Range("A3").Offset(i, 2).value = doc.getElementsByClassName("hotness-signal red")(i).innerText ' SOLD AMOUNT
                Range("A3").Offset(i, 3).value = doc.getElementsByClassName("prRange")(i).innerText 'CURRENT PRICE
                Range("A3").Offset(i, 4).value = doc.getElementsByClassName("stk-thr")(i).innerText ' SHIPPING TYPE E.G FREE bfsp
                Range("A3").Offset(i, 5).value = doc.getElementsByClassName("bfsp")(i).innerText ' SHIPPING TYPE E.G FREE
                Range("A3").Offset(i, 6).value = doc.getElementsByClassName("lvsubtitle")(i).innerText 'SUB TITLE
                Range("A3").Offset(i, 7).value = doc.getElementsByClassName("FnFl fnf-green")(i).innerText
            Next i
            If PageNumber >= 2 Then Exit Do      ' Searches First two pages on Ebay
            Set nextPageElement = htmlDoc.getElementsByClassName("gspr next")(0)
            If nextPageElement Is Nothing Then Exit Do
            nextPageElement.Click                'Clicks Next Page
            Do While ie.Busy Or ie.readyState <> 4
                DoEvents
            Loop
            Application.Wait Now + TimeSerial(0, 0, 5)
            Set htmlDoc = ie.Document
            PageNumber = PageNumber + 1
        Loop
        ie.Quit
        Set ie = Nothing
        Set htmlDoc = Nothing
        Set nextPageElement = Nothing
        Set div = Nothing
        Set link = Nothing
        MsgBox "All Done"
    End With
End Sub

Я объявил переменные сейчас Dim ie As Object Dim pageNumber As Long Dim htmlDoc As Object Dim nextPageElement As Object Dim div As Object Dim link As Object

Это сообщение об ошибке, Большинство цены в обоих столбцах НЕ соответствуют пунктам. enter image description here

Это ошибка в vba enter image description here

Спасибо за взгляд, подойдет любое руководство / поддержка. Из того, что я могу потренироваться, есть несколько цен «Купить сейчас», «Аукцион», «Лучшее предложение» и «Типы почтовых расходов» и т. Д. c. код делает три вещи неправильно

  1. Он помещает цены и виды почтовых отправлений в ПЕРВУЮ ПУСТОЙ КЛЕТКУ, а не в первую пустую строку. таким образом, если нет элемента для ввода, следует оставить эту ячейку пустой для этого продукта.

  2. Если один и тот же класс, например "bfsp", используется для двух или более элементов, он помещает оба в столбец, например, ячейки D4 + D5 , например, Free Return и Free почтовые расходы, , но я не могу выбрать, какой из двух я пробую, который я хочу getElementsByClassName("bfsp")(i, 2).innerText, но он не работает, чтобы выбрать правильный, я Я пробовал дополнительный столбец, но он снова вытягивает оба.

  3. Поскольку есть несколько цен, мне пришлось добавить больше классов в код, чтобы поместить это в следующий столбец, но снова элементы помещаются в первую пустую ячейку, и для класса "жирный" он поднимает неправильные цены, это должны быть цены аукциона, но он подтягивает текущую цену и проданную сумму и помещает их в одну ячейку

Dim i As Integer For i = 0 To 500 Range("A3").Offset(i).Value = doc.getElementsByClassName("vip")(i).href ' URL Range("A3").Offset(i, 1).Value = doc.getElementsByClassName("lvtitle")(i).innerText ' TITLE Range("A3").Offset(i, 2).Value = doc.getElementsByClassName("hotness-signal red")(i).innerText ' SOLD AMOUNT Range("A3").Offset(i, 3).Value = doc.getElementsByClassName("prRange")(i).innerText 'CURRENT PRICE Range("A3").Offset(i, 4).Value = doc.getElementsByClassName("lvprice prc")(i).innerText 'Current Auction Price Range("A3").Offset(i, 5).Value = doc.getElementsByClassName("stk-thr")(i).innerText ' SHIPPING TYPE E.G FREE Range("A3").Offset(i, 6).Value = doc.getElementsByClassName("lvformat")(i).innerText ' Auction Bidds Range("A3").Offset(i, 7).Value = doc.getElementsByClassName("bfsp")(i).innerText ' SHIPPING TYPE E.G FREE Range("A3").Offset(i, 8).Value = doc.getElementsByClassName("fee")(i).innerText ' Auction Shipping Range("A3").Offset(i, 9).Value = doc.getElementsByClassName("lvsubtitle")(i).innerText 'SUB TITLE Range("A3").Offset(i, 10).Value = doc.getElementsByClassName("FnFl fnf-green")(i).innerText Next i

Извините, если этот код выглядит неправильно, я не использую этот макет форума.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...