Страницы: 1
RSS
Run-Time error 91 Object variable or With block variable not set
 
Всем привет! В диапазоне A5:A507 записаны тикеры компаний из индекса S&P500. Хочу диапазон B5:B507 заполнить названиями компаний. Данные беру из сайта finviz.com. С помощью нижеприведенного кода получается заполнить все ячейки, кроме последней (B507 с тикером SOLV). Ошибка 91 - Object variable or With block variable not set. Интресно, что проблема не в позиции тикера SOLV - A507, а в самом тикере, потому как я его переставлял уже в середину диапазона. Сам тикер и информация по компании на сайте есть.

Sub comparisonShares()

   Dim xmlReq As New XMLHTTP60
   Dim htm As HTMLDocument
   
   Set xmlReq = New XMLHTTP60
   Set htm = New HTMLDocument
   
   Dim i As Long
   
   Dim firstTextSite As String
   Dim lastTextSite As String
   Dim ticker As String
   
   Dim companyName As Variant
       
       
   For i = 5 To 508
   
       firstTextSite = "https://finviz.com/quote.ashx?t="
       lastTextSite = "&p=d"
       ticker = Workbooks("VBA Lessons.xlsm").Worksheets("SP500").Range("A" & i)
   
       xmlReq.Open "GET", firstTextSite & ticker & lastTextSite, False
       xmlReq.send
   
       htm.body.innerHTML = xmlReq.responseText    
   
       companyName = htm.getElementsByClassName("tab-link block truncate")(0).innerText
   
       Workbooks("VBA Lessons.xlsm").Worksheets("SP500").Range("B" & i).Value = companyName
       
   Next i

End Sub
Изменено: vdi - 09.06.2024 10:56:23
 
Вы бы хоть написали на какой строке ошибка возникает. По голому коду без файла сложно вообще о чем-то конкретном говорить.
Возможно, ошибка в написании имени файла или листа(лишние пробелы, вместо латинских букв кириллица и т.п.).
А может htm.getElementsByClassName возвращает Nothing и соответственно получить от него что-то в виде значения уже не получается.

P.S. На форуме есть возможность выделять код тегом - кнопочка <...>. Выделили текст кода - нажали кнопочку.
Изменено: Дмитрий(The_Prist) Щербаков - 09.06.2024 12:19:48
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо за ответ. Ошибка возникает в строке:

companyName = htm.getElementsByClassName("tab-link block truncate")(0).innerText
 
Вот и разбирайтесь с тем, что за страница у Вас получается здесь:
Код
htm.body.innerHTML

либо ошибка формирования, либо там вообще другая структура, в которой нет искомого элемента.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх