2015-12-02 3 views
0

См. Приведенный ниже код. Я составляю список необычных валютных пар в excel, и я хочу очистить эти данные с помощью VBA. Я хочу только вставить значение в ячейку. Кто-нибудь знает, где я ошибаюсь? Я получаю «Ошибка времени выполнения 91»: переменная объекта или с переменной блока не установлена ​​». Я относительно новичок в VBA, и я вложил в это много размышлений.Скребок одного значения из таблицы HTML и вставка в ячейку Excel с VBA

Sub ie_open() 
    Dim wb As Workbook 
    Dim ws As Worksheet 
    Dim TxtRng As Range 
    Dim ie As Object 

    Set ie = CreateObject("INTERNETEXPLORER.APPLICATION") 
    ie.NAVIGATE "http://www.barchart.com/quotes/forex/British_Pound/Costa_Rican_Colon/%5EGBPCRC" 
    ie.Visible = True 

    While ie.ReadyState <> 4 
     DoEvents 
    Wend 

    Set wb = ActiveWorkbook 
    Set ws = wb.Sheets("Test Sheet") 
    Set TxtRng = ws.Range("A1") 
    TxtRng.Value = ie.document.getelementsbyname("divQuotePage").Item.innertext 

End Sub 

Это данные, которые я пытаюсь скрести:

Спасибо.

+0

Вы не возражаете, делясь тем, что линия вызывает сообщение об ошибке? Или мы должны попытаться угадать? Угадайте: у вас нет листа19. Это вызовет это сообщение. –

+0

Спасибо, я быстро поправил это. Теперь он показывает «Ошибка времени выполнения 91 ': объектная переменная или с переменной блока не установлена». Я считаю, что проблема связана со ссылкой на элемент html. – Pineapple

+0

При возникновении ошибки, если вы выберете опцию Debug, в вашем коде должна быть выделена определенная строка. Это будет строка, которая вызывает ошибку. Вы должны показать, что ясно в вашем вопросе –

ответ

2

Я не настолько совершенствуюсь в веб-соскабливании, но такая ошибка часто означает, что то, что вы ищете, не существует. В частности, я не вижу divQuotePage на снимке экрана, который вы предоставили.

Но если вы хотите цитаты (793.19) вы могли бы сделать что-то вроде:

Dim V As Variant 
Set V = ie.document.getelementbyid("dtaLast") 
TxtRng = V.innertext 
+0

Perfect - спасибо! – Pineapple

0

Это будет работать.

Sub Test() Dim IE в качестве объекта

Set IE = CreateObject("InternetExplorer.Application") 
With IE 
    .Visible = True 
    .Navigate "http://www.barchart.com/quotes/forex/British_Pound/Costa_Rican_Colon/%5EGBPCRC" ' should work for any URL 
    Do Until .ReadyState = 4: DoEvents: Loop 

     x = .document.body.innertext 
     y = InStr(1, x, "Last Price") 
     Z = Mid(x, y, 19) 

     Range("A1").Value = Trim(Z) 

     .Quit 
    End With 

End Sub