Попытка импортировать обрезанное значение с веб-сайта - PullRequest
0 голосов
/ 19 июня 2020
Sub GetlastPrice()

Dim Html As New 
HTMLDocument, elem$, price$
Dim ws As Worksheet, URL As String
Set ws = ThisWorkbook.Worksheets("Sheet2")

With CreateObject("MSXML2.XMLHTTP")

URL = "https://www1.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=UBL"
    .Open "GET", URL, False
    .send
    Html.body.innerHTML = .responseText
End With

elem = Html.querySelector("#responseDiv").innerText

price = Split(Split(elem, "lastPrice"":""")(1), """,")(0)

ws.Range("A2").Value = price1

End Sub

Запуск vba приносит

1020,25 "}]," optLink ":" / marketinfo / sym_map / symbolMapping. jsp? Symbol = UBL & instrument = - & date = - & segmentLink = 17 & symbolCount = 2

Я просто хочу 1020,25

Пожалуйста, помогите

1 Ответ

0 голосов
/ 19 июня 2020

Не забудьте добавить поддержку библиотеки Regular Expresison:

Шаг 1: Добавьте ссылку VBA на «Microsoft VBScript Regular Expressions 5.5»

  • Выберите вкладку «Разработчик» (у меня нет этой вкладки, что мне делать?)
  • Выберите значок «Visual Basi c» в разделе ленты «Код»
  • В » Microsoft Visual Basi c для приложений »выберите« Инструменты »в верхнем меню.
  • Выберите« Ссылки »
  • Установите флажок рядом с« Microsoft VBScript Regular Expressions 5.5 »для включения в ваша рабочая тетрадь.
  • Нажмите «ОК»

(Инструкции предоставлены: Сообщение Portland Runner , в котором также представлен исчерпывающий обзор шаблона регулярного выражения синтаксис)

Теперь вы можете сделать что-то вроде этого:

elem = Html.querySelector("#responseDiv").innerText()

Dim strPattern As String: strPattern = """lastPrice"":""([0-9,.]+)""\}\]"
Dim re As New RegExp

With re
    .Global = True
    .MultiLine = True
    .IgnoreCase = False
    .Pattern = strPattern
End With

Set allMatches = re.Execute(elem)
Dim result As String: result = ""

If allMatches.Count <> 0 Then
    result = allMatches.Item(0).SubMatches(0)
End If

ws.Range("A2").Value = result
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...