Как изменить кодировку для XML - PullRequest
0 голосов
/ 27 января 2019

На изображении значение под «открытым» внутри красного круга 749.10 я хочу в своем листе Excel. Я делаю свою работу над проектом, где мне нужен этот XML-код для быстрой работы.

Я понял, что кодирование Excel VBA написал этот код самостоятельно, я так много пытался, но я не могу сделатьта же работа в "XML".

Sub JJ()

    Dim IE As New SHDocVw.InternetExplorer
    Dim hdoc As MSHTML.HTMLDocument
    Dim ha, hb, hc, hd As String


    IE.Visible = True
    IE.navigate "https://www.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=HAL"
    Do While IE.readyState <> READYSTATE_COMPLETE
    Loop

    Set hdoc = IE.document

    ha = hdoc.getElementById("open").innerText
    Range("K2").Value = ha

   IE.Quit

End Sub

Я ожидал, что рабочий код XML для той же работы

1 Ответ

0 голосов
/ 27 января 2019

Я думаю, вы говорите, что хотите конвертировать в запрос xmlhttp.Часть содержимого визуализируется на JavaScript, но требуемое значение также присутствует в div как json.

Вы видите, что целевой идентификатор пуст в ответе, так как для заполнения содержимого требуется javascript:

enter image description here

Однакота же самая информация присутствует в другом месте в div:

image

Вы можете проанализировать желаемое значение из этого json, используя анализатор json.Я использую jsonconverter.bas .После добавления .bas в ваш проект вам нужно перейти VBE > Tools > References > Add a reference to Microsoft Scripting Runtime.Вам также нужна ссылка для Microsoft HTML Object Library.Когда вы изучите ответ json с помощью json viewer , вы увидите структуру.{} обозначает словарь, доступ к которому осуществляется по ключу;[] указывает на коллекцию, доступную по индексу, а значения с * являются строковыми литералами.

Option Explicit
Public Sub GetInfo()
    Const URL As String = "https://www.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=HAL"
    Dim html As HTMLDocument, json As Object
    Set html = New HTMLDocument
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", URL, False
        .Send
        html.body.innerHTML = .responsetext
    End With
    Set json = jsonconverter.ParseJson(html.getElementById("responseDiv").innerText)
    Debug.Print json("data")(1)("open")
End Sub

Вот сокращенное представление json:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...