Нужна помощь с макросом. Макрос должен по первым двум колонкам делать запрос, а затем выбирать данные и заносить их в две другие колонки, а в последнюю ставить дату и время последнего запроса
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."}
[moder]Для вопросов по VBA есть своя ветка на форуме. Перенесла.[/moder]
Нужна помощь с макросом. Макрос должен по первым двум колонкам делать запрос, а затем выбирать данные и заносить их в две другие колонки, а в последнюю ставить дату и время последнего запроса
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."}
[moder]Для вопросов по VBA есть своя ветка на форуме. Перенесла.[/moder]НиколайК
'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]
[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
Выходит ошибка когда отсутствует в ответе вторая половина, можно внести изменения таким образом, чтобы ошибка не возникала, а в четвертую колонку подставлялся ноль
Выходит ошибка когда отсутствует в ответе вторая половина, можно внести изменения таким образом, чтобы ошибка не возникала, а в четвертую колонку подставлялся нольНиколайК
Взяла код Александра ( 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]
Взяла код Александра ( 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
еще до кучи (тоже на основе кода Александра ( 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]
еще до кучи (тоже на основе кода Александра ( 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