Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос выполняющий get запрос и получающий json ответ - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос выполняющий get запрос и получающий json ответ (Макросы/Sub)
Макрос выполняющий get запрос и получающий json ответ
НиколайК Дата: Понедельник, 25.04.2016, 00:33 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Нужна помощь с макросом. Макрос должен по первым двум колонкам делать запрос, а затем выбирать данные и заносить их в две другие колонки, а в последнюю ставить дату и время последнего запроса

[moder]Для вопросов по VBA есть своя ветка на форуме. Перенесла.[/moder]
К сообщению приложен файл: 9785650.xls(14Kb)


Сообщение отредактировал Manyasha - Понедельник, 25.04.2016, 21:15
 
Ответить
СообщениеНужна помощь с макросом. Макрос должен по первым двум колонкам делать запрос, а затем выбирать данные и заносить их в две другие колонки, а в последнюю ставить дату и время последнего запроса

[moder]Для вопросов по VBA есть своя ветка на форуме. Перенесла.[/moder]

Автор - НиколайК
Дата добавления - 25.04.2016 в 00:33
Manyasha Дата: Понедельник, 25.04.2016, 21:27 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 1994
Репутация: 819 ±
Замечаний: 0% ±

Excel 2010, 2016
НиколайК, Скачала Ваш файл - он пустой.


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеНиколайК, Скачала Ваш файл - он пустой.

Автор - Manyasha
Дата добавления - 25.04.2016 в 21:27
НиколайК Дата: Вторник, 26.04.2016, 08:16 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Странно, тогда вот
К сообщению приложен файл: 9408339.xls(16Kb)
 
Ответить
СообщениеСтранно, тогда вот

Автор - НиколайК
Дата добавления - 26.04.2016 в 08:16
alex77755 Дата: Вторник, 26.04.2016, 09:25 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 312
Репутация: 58 ±
Замечаний: 0% ±

[vba]
Код
Option Explicit

'http://steamcommunity.com/market/priceoverview/?currency=5&country=us&appid=11111&market_hash_name=22222&format=json
'вместо 11111 должно быть значение из 1 колонки, а вместо 22222 - из второй.
'Пример ответа: {"success":true,"lowest_price":"71,08 p\u0443\u0431.","volume":"1,126","median_price":"70,56 p\u0443\u0431."}
Sub qwerty()
Dim i, r, a, b, s, u, lr
With Лист3
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
.Cells(2, 3).Resize(lr - 1, 3).ClearContents
For r = 2 To lr
    a = .Cells(r, 1)
    b = .Cells(r, 2)
    s = "http://steamcommunity.com/market/priceoverview/?currency=5&country=us&appid="
    s = s & a & "&market_hash_name="
    s = s & b & "&format=json"
    i = GetHTTPResponse(s)
    Debug.Print i
    u = Split(i, ":")
    .Cells(r, 3) = Replace(Trim(Replace(Split(u(2), "\")(0), "p", "")), Chr(34), "")
    .Cells(r, 4) = Replace(Trim(Replace(Split(u(4), "\")(0), "p", "")), Chr(34), "")
    .Cells(r, 5) = Now
Next r
End With
End Sub

   Private Function GetHTTPResponse(ByVal sURL As String) As String
     Dim oXMLHTTP
     On Error Resume Next
     Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
     With oXMLHTTP
        .Open "GET", sURL, False
        .SetRequestHeader "Cache-Control", "max-age=0"
        .SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.41 Safari/537.36 OPR/35.0.2066.10 (Edition beta)"
        .SetRequestHeader "Accept-Encoding", "deflate"
        .SetRequestHeader "Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"
        .send
         GetHTTPResponse = .responseText
     End With
     Set oXMLHTTP = Nothing
End Function
[/vba]


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
Сообщение[vba]
Код
Option Explicit

'http://steamcommunity.com/market/priceoverview/?currency=5&country=us&appid=11111&market_hash_name=22222&format=json
'вместо 11111 должно быть значение из 1 колонки, а вместо 22222 - из второй.
'Пример ответа: {"success":true,"lowest_price":"71,08 p\u0443\u0431.","volume":"1,126","median_price":"70,56 p\u0443\u0431."}
Sub qwerty()
Dim i, r, a, b, s, u, lr
With Лист3
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
.Cells(2, 3).Resize(lr - 1, 3).ClearContents
For r = 2 To lr
    a = .Cells(r, 1)
    b = .Cells(r, 2)
    s = "http://steamcommunity.com/market/priceoverview/?currency=5&country=us&appid="
    s = s & a & "&market_hash_name="
    s = s & b & "&format=json"
    i = GetHTTPResponse(s)
    Debug.Print i
    u = Split(i, ":")
    .Cells(r, 3) = Replace(Trim(Replace(Split(u(2), "\")(0), "p", "")), Chr(34), "")
    .Cells(r, 4) = Replace(Trim(Replace(Split(u(4), "\")(0), "p", "")), Chr(34), "")
    .Cells(r, 5) = Now
Next r
End With
End Sub

   Private Function GetHTTPResponse(ByVal sURL As String) As String
     Dim oXMLHTTP
     On Error Resume Next
     Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
     With oXMLHTTP
        .Open "GET", sURL, False
        .SetRequestHeader "Cache-Control", "max-age=0"
        .SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.41 Safari/537.36 OPR/35.0.2066.10 (Edition beta)"
        .SetRequestHeader "Accept-Encoding", "deflate"
        .SetRequestHeader "Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"
        .send
         GetHTTPResponse = .responseText
     End With
     Set oXMLHTTP = Nothing
End Function
[/vba]

Автор - alex77755
Дата добавления - 26.04.2016 в 09:25
НиколайК Дата: Вторник, 26.04.2016, 15:24 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Выходит ошибка когда отсутствует в ответе вторая половина, можно внести изменения таким образом, чтобы ошибка не возникала, а в четвертую колонку подставлялся ноль
 
Ответить
СообщениеВыходит ошибка когда отсутствует в ответе вторая половина, можно внести изменения таким образом, чтобы ошибка не возникала, а в четвертую колонку подставлялся ноль

Автор - НиколайК
Дата добавления - 26.04.2016 в 15:24
Manyasha Дата: Вторник, 26.04.2016, 18:49 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 1994
Репутация: 819 ±
Замечаний: 0% ±

Excel 2010, 2016
Взяла код Александра ( alex77755).
Функцию GetHTTPResponse не трогала, а макрос qwerty немного переделала:
[vba]
Код
Sub qwerty()
    Dim i, r, a, b, s$, u, lr
    Dim objReg, pr, j
    With Лист3
        lr = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Cells(2, 3).Resize(lr - 1, 3).ClearContents
        For r = 2 To lr
            a = .Cells(r, 1)
            b = .Cells(r, 2)
            s = "http://steamcommunity.com/market/priceoverview/?currency=5&country=us&appid="
            s = s & a & "&market_hash_name="
            s = s & b & "&format=json"
            i = GetHTTPResponse(s)
            j = 0
            For Each pr In Array("lowest_price", "median_price")
                With CreateObject("VBScript.Regexp")
                    .Pattern = pr & """:""+(\d+,\d+)"
                    Set objReg = .Execute(i)
                    If objReg.Count > 0 Then
                        .Pattern = "(\d+,\d+)"
                        Set objReg = .Execute(objReg(0))
                        If objReg.Count > 0 Then Лист3.Cells(r, 3 + j).Value = objReg(0)
                    End If
                    j = j + 1
                End With
            Next pr
            .Cells(r, 5) = Now
        Next r
    End With
End Sub
[/vba]


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеВзяла код Александра ( alex77755).
Функцию GetHTTPResponse не трогала, а макрос qwerty немного переделала:
[vba]
Код
Sub qwerty()
    Dim i, r, a, b, s$, u, lr
    Dim objReg, pr, j
    With Лист3
        lr = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Cells(2, 3).Resize(lr - 1, 3).ClearContents
        For r = 2 To lr
            a = .Cells(r, 1)
            b = .Cells(r, 2)
            s = "http://steamcommunity.com/market/priceoverview/?currency=5&country=us&appid="
            s = s & a & "&market_hash_name="
            s = s & b & "&format=json"
            i = GetHTTPResponse(s)
            j = 0
            For Each pr In Array("lowest_price", "median_price")
                With CreateObject("VBScript.Regexp")
                    .Pattern = pr & """:""+(\d+,\d+)"
                    Set objReg = .Execute(i)
                    If objReg.Count > 0 Then
                        .Pattern = "(\d+,\d+)"
                        Set objReg = .Execute(objReg(0))
                        If objReg.Count > 0 Then Лист3.Cells(r, 3 + j).Value = objReg(0)
                    End If
                    j = j + 1
                End With
            Next pr
            .Cells(r, 5) = Now
        Next r
    End With
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 26.04.2016 в 18:49
krosav4ig Дата: Среда, 27.04.2016, 16:20 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1466
Репутация: 597 ±
Замечаний: 0% ±

Excel 2007, 2013
еще до кучи (тоже на основе кода Александра ( alex77755 ))
[vba]
Код
Sub qwerty()
    Dim i, r, a, b, s, lr, json
    With Лист3
        lr = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Cells(2, 3).Resize(lr - 1, 3).ClearContents
        For r = 2 To lr
            a = .Cells(r, 1)
            b = .Cells(r, 2)
            s = "http://steamcommunity.com/market/priceoverview/?currency=5&country=us&appid="
            s = s & a & "&market_hash_name="
            s = s & b & "&format=json"
            i = GetHTTPResponse(s)
            Debug.Print i
            With CreateObject("scriptcontrol")
                .Language = "jscript"
                Set json = .eval("(" & i & ")")
            End With
            On Error Resume Next
            .Cells(r, 3) = json.lowest_price
            .Cells(r, 4) = json.median_price
            On Error GoTo 0
            .Cells(r, 5) = Now
        Next r
    End With
End Sub

Private Function GetHTTPResponse(ByVal sURL As String) As String
    Dim oXMLHTTP
    On Error Resume Next
    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
    With oXMLHTTP
        .Open "GET", sURL, False
        .SetRequestHeader "Cache-Control", "max-age=0"
        .SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.41 Safari/537.36 OPR/35.0.2066.10 (Edition beta)"
        .SetRequestHeader "Accept-Encoding", "deflate"
        .SetRequestHeader "Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"
        .send
        GetHTTPResponse = .responseText
    End With
    Set oXMLHTTP = Nothing
End Function
[/vba]


(_)Õvõ(_)

Сообщение отредактировал krosav4ig - Среда, 27.04.2016, 16:22
 
Ответить
Сообщениееще до кучи (тоже на основе кода Александра ( alex77755 ))
[vba]
Код
Sub qwerty()
    Dim i, r, a, b, s, lr, json
    With Лист3
        lr = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Cells(2, 3).Resize(lr - 1, 3).ClearContents
        For r = 2 To lr
            a = .Cells(r, 1)
            b = .Cells(r, 2)
            s = "http://steamcommunity.com/market/priceoverview/?currency=5&country=us&appid="
            s = s & a & "&market_hash_name="
            s = s & b & "&format=json"
            i = GetHTTPResponse(s)
            Debug.Print i
            With CreateObject("scriptcontrol")
                .Language = "jscript"
                Set json = .eval("(" & i & ")")
            End With
            On Error Resume Next
            .Cells(r, 3) = json.lowest_price
            .Cells(r, 4) = json.median_price
            On Error GoTo 0
            .Cells(r, 5) = Now
        Next r
    End With
End Sub

Private Function GetHTTPResponse(ByVal sURL As String) As String
    Dim oXMLHTTP
    On Error Resume Next
    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
    With oXMLHTTP
        .Open "GET", sURL, False
        .SetRequestHeader "Cache-Control", "max-age=0"
        .SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.41 Safari/537.36 OPR/35.0.2066.10 (Edition beta)"
        .SetRequestHeader "Accept-Encoding", "deflate"
        .SetRequestHeader "Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"
        .send
        GetHTTPResponse = .responseText
    End With
    Set oXMLHTTP = Nothing
End Function
[/vba]

Автор - krosav4ig
Дата добавления - 27.04.2016 в 16:20
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос выполняющий get запрос и получающий json ответ (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!