Веб-скребок с VBA

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

Private Sub Worksheet_Change(ByVal Target As Range)

Dim stock As Long, rng As Range, quote As String, ie As InternetExplorer, doc As HTMLDocument

Set rng = Range("A1")
stock = rng.Value
Set ie = CreateObject("InternetExplorer.Application")

If Target.Rows = rng.Rows And Target.Columns = rng.Columns Then

 ie.navigate "http://www.aastocks.com/en/ltp/rtquote.aspx?symbol=0" & rng.Value
 ie.Visible = True

 Do
 DoEvents
 Loop Until ie.readyState = READYSTATE_COMPLETE

 Set doc = ie.document

 quote = doc.getElementsByTagName("neg bold").innertext

 MsgBox quote

End If

End Sub

Однако, когда я запускаю макрос, он показывает ошибку 91 (переменная объекта или с заблокированной переменной блока) в строке

quote = doc.getElementsByTagName("neg bold").innertext

ниже приведен код HTML источника (цена акции)

<span>1.900</span>

Большое спасибо!

1 ответ

Аргументом для getElementsByTagName должно быть имя элемента, а не имя класса. Если вы хотите настроить объект по имени класса, вы можете использовать метод getElementsByClassname

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

licensed under cc by-sa 3.0 with attribution.