Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Запрос с изменяющимися переменными в источнике данных с помощью VBA макроса
 
Привет еще раз. Хочу в запросе на скачивание исторических данных по акциям в VBA Excel сделать в источнике данных переменный параметр. В данном случае подставлять вместо AAPL любой другой текст из некоторой ячейки U2 в документе. Обозначил эту переменную под текст в ячейке как ticker и прировнял ее к  Workbooks("VBA Lessons.xlsm").Worksheets("HistoryPrice").Range("U2")

Источник = Csv.Document(Web.Contents("http://query1.finance.yahoo.com/v7/finance/download/AAPL?period1=1686209419&period2=1717....)

Пытался прописать это как .../download/"&ticker&"?period1..., но выходит ошибка. Вероятно, надо как-то иначе это прописывать. Ответ пока не нашел. Буду признателен, если кто-нибудь поможет в этом вопросе.
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
Удаление запросов Power Query
 
Всем привет! Подскажите, пожалуйста, как и можно ли вообще в макросе VBA прописать удаление запросов Power Query?
Склейка адреса сайта для парсинга данных
 
Всем привет!

Хотел попробовать получать финансовые данные с сайта https://finviz.com/ в зависимости от введенного в некоторой ячейке тикера (в данном случае ячейка "B3" из листа "CompanyInfo" книги "VBA Lessons.xlsm").

Предположим, что тикер "AAPL". Адрес страницы с финансовыми показателями Apple: https://finviz.com/quote.ashx?t=AAPL&p=d.

Чтобы в макросе изменялся адрес страницы в зависимости от введенного в ячейке нового тикера, я решил разбить ссылку на следующие части: "https://finviz.com/quote.ashx?t="    &    ticker    &    "&p=d". При этом переменную ticker прировнял к Workbooks("VBA Lessons.xlsm").Worksheets("CompanyInfo").Range("B3"). Однако, при такой склейке возникает ошибка: Object variable or With block variable not set. При том, что если прямо в макросе прописать ticker = "AAPL", то код срабатывает корректно и данные удается получить. Пока не получается найти решение данной проблемы.

Заранее благодарен всем, кто решит помочь. Код макроса приведу ниже:

Sub finInfoFinViz()

   Dim xmlReq As New XMLHTTP60
   Dim htm As HTMLDocument
 
   Set xmlReq = New XMLHTTP60
   Set htm = New HTMLDocument
 
   Dim firstTextSite As String
   Dim lastTextSite As String
   Dim ticker As String
 
   firstTextSite = "https://finviz.com/quote.ashx?t=";
   lastTextSite = "&p=d"
   ticker = Workbooks("VBA Lessons.xlsm").Worksheets("CompanyInfo").Range("B3")
 
   xmlReq.Open "GET", firstTextSite & ticker & lastTextSite, False
   xmlReq.send
 
   htm.body.innerHTML = xmlReq.responseText
   'ниже попытка получения одного из параметров по акции AAPL
   Debug.Print htm.getElementsByClassName("snapshot-td2 w-[8%] ")(0).innerText

End Sub
Страницы: 1
Наверх