Получение ответа HTTP GET и обновление существующих данных электронной таблицы в Excel

Привет, у меня есть ответ Json на веб-странице, которую я пытаюсь зафиксировать, обновив существующую электронную таблицу с этими данными. Я сослался на следующий VBScript. Я получаю пустой файл excel, и каким-то образом электронная таблица не получает данные json.

Ответ JSON на веб-странице

[
    {
        "Sno ": "1",
        "Name": "Alex",
        "Age ": "27",
        "City": "Newyork"
    },
    {
        "Sno ": "2",
        "Name": "Smith",
        "Age ": "25",
        "City": "Los angeles"
    },
    {
        "Sno ": "3",
        "Name": "austin",
        "Age ": "26",
        "City": "Calfornia"
    }
]

Используется VBScript (ссылка на источник стека)

Sub Button4_Click()    
    'clearing the contents of the sheet prior to synchronisation of data with GCP
    Dim str As String
     Dim myarray() As Variant
    'Delete existing data
    Sheets("Backup_sheet").Activate 'Name of sheet the data will be downloaded into. Change as required.
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.ClearContents

    Url = "http://127.0.0.1:5555/refresh"
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    objHTTP.Open "GET", Url, False, "john", "hello"
    objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    objHTTP.setRequestHeader "Content-Type", "application/json"

    QueryQuote:
                With Sheets("Backup_sheet").QueryTables.Add(Connection:="Url;" & str, Destination:=Sheets("Backup_sheet").Range("a1"))
                    .BackgroundQuery = True
                    .TablesOnlyFromHTML = False
                    .Refresh BackgroundQuery:=False
                    .SaveData = True
                End With
    Sheets("Backup_sheet").Range("a1").CurrentRegion.TextToColumns Destination:=Sheets("Backup_sheet").Range("a1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=True, Space:=False, other:=True, OtherChar:=",", FieldInfo:=Array(1, 2)

    Sheets("Backup_sheet").Columns("A:B").ColumnWidth = 12
    Range("A1").Select
End Sub

Ожидаемые выходные данные после получения данных

введите здесь описание изображения

Может кто-нибудь помочь, где я ошибаюсь/любые предложения, как этого добиться, будут полезны. Спасибо.


person prasanna kumar    schedule 18.03.2020    source источник
comment
Где ваш заголовок авторизации?   -  person Mech    schedule 18.03.2020
comment
Вам может быть полезно прочитать Как избежать использования Select в Excel VBA.   -  person Pᴇʜ    schedule 18.03.2020
comment
Вы устанавливаете все эти параметры для objHTTP, но никогда не отправляете их с objHTTP.Send. Так что я предполагаю, что это вообще ничего не делает.   -  person Pᴇʜ    schedule 18.03.2020
comment
Привет @Mech, я очень новичок в скрипте Vb, поэтому не знаком с вопросом. Можете ли вы указать мне какие-либо ресурсы или как использовать заголовок авторизации   -  person prasanna kumar    schedule 18.03.2020
comment
Поскольку это ссылочный код, я не смогу правильно вернуться. Да, я хочу отправить данные json, используя объект HTTP-запроса, и обновить эти данные в электронной таблице. Любое руководство о том, что нужно узнать, чтобы исправить этот сценарий, было бы полезно.   -  person prasanna kumar    schedule 18.03.2020
comment
@prasannakumar Я думаю, ты перепутал две разные вещи. Один из подходов заключается в использовании MSXML2.ServerXMLHTTP и запросе JSON, который затем необходимо проанализировать, чтобы получить данные (см. JSON в Excel VBA) • Другой подход заключается в использовании QueryTables. Также см. этот ответ.   -  person Pᴇʜ    schedule 18.03.2020
comment
Также может быть полезно: Обработка объекта JSON в ответе XMLHttp в Код Excel VBA   -  person Pᴇʜ    schedule 18.03.2020
comment
Если вы разрабатываете локально (127.0.0.1), это, вероятно, не проблема сейчас, но вполне может вызвать проблему для вас в будущее. Я оговорился, когда сказал разрешение. Я имел в виду ссылку на аутентификацию. Это достойное чтение: stackoverflow.com/questions/33505130/. Обратите внимание, что Base64 не является безопасным.   -  person Mech    schedule 18.03.2020
comment
Спасибо @Mech за указание, но он использовался только для тестирования на локальном компьютере, поскольку ответ json создается с использованием приложения фляги, написанного на python.   -  person prasanna kumar    schedule 18.03.2020