У меня есть две проблемы, и я не был уверен, чтобы опубликовать две темы, так как я не хотел, чтобы меня вызывали для двойной публикации. Я пытался их починить уже несколько недель, но просто не могу разобраться с ними. Я новичок в 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
Это сообщение об ошибке, Большинство цены в обоих столбцах НЕ соответствуют пунктам.
Это ошибка в vba
Спасибо за взгляд, подойдет любое руководство / поддержка. Из того, что я могу потренироваться, есть несколько цен «Купить сейчас», «Аукцион», «Лучшее предложение» и «Типы почтовых расходов» и т. Д. c. код делает три вещи неправильно
Он помещает цены и виды почтовых отправлений в ПЕРВУЮ ПУСТОЙ КЛЕТКУ, а не в первую пустую строку. таким образом, если нет элемента для ввода, следует оставить эту ячейку пустой для этого продукта.
Если один и тот же класс, например "bfsp", используется для двух или более элементов, он помещает оба в столбец, например, ячейки D4 + D5 , например, Free Return и Free почтовые расходы, , но я не могу выбрать, какой из двух я пробую, который я хочу getElementsByClassName("bfsp")(i, 2).innerText
, но он не работает, чтобы выбрать правильный, я Я пробовал дополнительный столбец, но он снова вытягивает оба.
Поскольку есть несколько цен, мне пришлось добавить больше классов в код, чтобы поместить это в следующий столбец, но снова элементы помещаются в первую пустую ячейку, и для класса "жирный" он поднимает неправильные цены, это должны быть цены аукциона, но он подтягивает текущую цену и проданную сумму и помещает их в одну ячейку
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
Извините, если этот код выглядит неправильно, я не использую этот макет форума.