Друзья, помогите, пожалуйста! Могу показаться чайником, а для Вас это будут семечки, но у меня уже голова пухнет от всех этих GET POST и т.п. запросов!! ( Никак не могу сложить пазл, прошу помощи Дано: файл эксель с двумя столбцами A - Code и В - Brand со значениями на скажем 1000 строк. Есть два постоянных значения ClientID = 10200 и Password = turg0404 Есть http://www.mikado-parts.ru/ws1/service.asmx?op=CodeBrandStockInfo куда это нужно будет запрашивать. Мне нужно получить столбец С со значениями PriceRUR, из результата выполнения функции CodeBrandStockInfo (полученного после нажатия кнопки Запуск) Например А = GDB3331, В = TRW, С = 2113.02
Друзья, помогите, пожалуйста! Могу показаться чайником, а для Вас это будут семечки, но у меня уже голова пухнет от всех этих GET POST и т.п. запросов!! ( Никак не могу сложить пазл, прошу помощи Дано: файл эксель с двумя столбцами A - Code и В - Brand со значениями на скажем 1000 строк. Есть два постоянных значения ClientID = 10200 и Password = turg0404 Есть http://www.mikado-parts.ru/ws1/service.asmx?op=CodeBrandStockInfo куда это нужно будет запрашивать. Мне нужно получить столбец С со значениями PriceRUR, из результата выполнения функции CodeBrandStockInfo (полученного после нажатия кнопки Запуск) Например А = GDB3331, В = TRW, С = 2113.02alkar
Sub СЕМЕЧКИ() Dim url$, txt$ Dim i& '------------------ With ActiveSheet a = .UsedRange.Value For i = 2 To UBound(a) If a(i, 1) <> "" And a(i, 2) <> "" Then url = "https://www.mikado-parts.ru/ws1/service.asmx/CodeBrandStockInfo?Code=" & a(i, 1) & "&Brand=" & a(i, 2) & "&ClientID=10200&Password=turg0404 HTTP/1.1" txt = GetHttp(url) .Cells(i, 3) = GetXml(txt, "CodeBrandResult/List/CodeBrandLine/PriceRUR") End If Next End With Beep MsgBox "Готово!" End Sub
Function GetXml(ByVal XmlText As String, ByVal NodePath As String) As String With CreateObject("MSXML2.DOMDocument") .async = False .validateOnParse = False .LoadXML (XmlText) GetXml = .SelectSingleNode(NodePath).TEXT End With End Function
Function GetHttp(ByVal url As String) As String With CreateObject("Microsoft.XMLHTTP") .Open "GET", url, "False" .setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" .setRequestHeader "Accept-Encoding", "gzip, deflate, sdch" .setRequestHeader "user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36" .setRequestHeader "Accept-Language", "ru,en-US;q=0.8,en;q=0.6" .setRequestHeader "Content-Type", "application/x-www-form-urlencoded" .send If .Status = 200 Then GetHttp = .responsetext End If End With End Function
[/vba]
[vba]
Код
Sub СЕМЕЧКИ() Dim url$, txt$ Dim i& '------------------ With ActiveSheet a = .UsedRange.Value For i = 2 To UBound(a) If a(i, 1) <> "" And a(i, 2) <> "" Then url = "https://www.mikado-parts.ru/ws1/service.asmx/CodeBrandStockInfo?Code=" & a(i, 1) & "&Brand=" & a(i, 2) & "&ClientID=10200&Password=turg0404 HTTP/1.1" txt = GetHttp(url) .Cells(i, 3) = GetXml(txt, "CodeBrandResult/List/CodeBrandLine/PriceRUR") End If Next End With Beep MsgBox "Готово!" End Sub
Function GetXml(ByVal XmlText As String, ByVal NodePath As String) As String With CreateObject("MSXML2.DOMDocument") .async = False .validateOnParse = False .LoadXML (XmlText) GetXml = .SelectSingleNode(NodePath).TEXT End With End Function
Function GetHttp(ByVal url As String) As String With CreateObject("Microsoft.XMLHTTP") .Open "GET", url, "False" .setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" .setRequestHeader "Accept-Encoding", "gzip, deflate, sdch" .setRequestHeader "user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36" .setRequestHeader "Accept-Language", "ru,en-US;q=0.8,en;q=0.6" .setRequestHeader "Content-Type", "application/x-www-form-urlencoded" .send If .Status = 200 Then GetHttp = .responsetext End If End With End Function
Sub СЕМЕЧКИ() Dim url$, txt$ Dim i& '------------------ With ActiveSheet a = .UsedRange.Value For i = 2 To UBound(a) If a(i, 1) <> "" And a(i, 2) <> "" Then url = "https://www.mikado-parts.ru/ws1/service.asmx/CodeBrandStockInfo?Code=" & a(i, 1) & "&Brand=" & a(i, 2) & "&ClientID=10200&Password=turg0404 HTTP/1.1" txt = GetHttp(url) .Cells(i, 3) = GetXml(txt, "CodeBrandResult/List/CodeBrandLine/PriceRUR") End If Next End With Beep MsgBox "Готово!" End Sub
Function GetXml(ByVal XmlText As String, ByVal NodePath As String) As String With CreateObject("MSXML2.DOMDocument") .async = False .validateOnParse = False .LoadXML (XmlText) GetXml = .SelectSingleNode(NodePath).TEXT End With End Function
Function GetHttp(ByVal url As String) As String With CreateObject("Microsoft.XMLHTTP") .Open "GET", url, "False" .setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" .setRequestHeader "Accept-Encoding", "gzip, deflate, sdch" .setRequestHeader "user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36" .setRequestHeader "Accept-Language", "ru,en-US;q=0.8,en;q=0.6" .setRequestHeader "Content-Type", "application/x-www-form-urlencoded" .send If .Status = 200 Then GetHttp = .responsetext End If End With End Function
[/vba]
[vba]
Код
Sub СЕМЕЧКИ() Dim url$, txt$ Dim i& '------------------ With ActiveSheet a = .UsedRange.Value For i = 2 To UBound(a) If a(i, 1) <> "" And a(i, 2) <> "" Then url = "https://www.mikado-parts.ru/ws1/service.asmx/CodeBrandStockInfo?Code=" & a(i, 1) & "&Brand=" & a(i, 2) & "&ClientID=10200&Password=turg0404 HTTP/1.1" txt = GetHttp(url) .Cells(i, 3) = GetXml(txt, "CodeBrandResult/List/CodeBrandLine/PriceRUR") End If Next End With Beep MsgBox "Готово!" End Sub
Function GetXml(ByVal XmlText As String, ByVal NodePath As String) As String With CreateObject("MSXML2.DOMDocument") .async = False .validateOnParse = False .LoadXML (XmlText) GetXml = .SelectSingleNode(NodePath).TEXT End With End Function
Function GetHttp(ByVal url As String) As String With CreateObject("Microsoft.XMLHTTP") .Open "GET", url, "False" .setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" .setRequestHeader "Accept-Encoding", "gzip, deflate, sdch" .setRequestHeader "user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36" .setRequestHeader "Accept-Language", "ru,en-US;q=0.8,en;q=0.6" .setRequestHeader "Content-Type", "application/x-www-form-urlencoded" .send If .Status = 200 Then GetHttp = .responsetext End If End With End Function
wild_pig, спасибо Вам большое за оперативную работу! Только сейчас появилась возможность протестировать и пока не получается: ругается на строку GetXml = .SelectSingleNode(NodePath).Text
wild_pig, спасибо Вам большое за оперативную работу! Только сейчас появилась возможность протестировать и пока не получается: ругается на строку GetXml = .SelectSingleNode(NodePath).Text alkar
Сообщение отредактировал alkar - Воскресенье, 19.09.2021, 20:42
doober, они валидны Мне кажется NodePath где то как переменную еще нужно прописать в коде, но это не точно ( Ругается на "run time error 91 object variable or with block variable not set" по строке GetXml = .SelectSingleNode(NodePath).Text
doober, они валидны Мне кажется NodePath где то как переменную еще нужно прописать в коде, но это не точно ( Ругается на "run time error 91 object variable or with block variable not set" по строке GetXml = .SelectSingleNode(NodePath).Textalkar
Сообщение отредактировал alkar - Воскресенье, 19.09.2021, 22:18
С патчем все нормально.Не находит такой элемент-вот и ошибка. Замените на этот код[vba]
Код
Function GetXml(ByVal XmlText As String, ByVal NodePath As String) As String
Debug.Print XmlText ' Посмотрите, что приходит в ответ With CreateObject("MSXML2.DOMDocument") .async = False .validateOnParse = False .LoadXML (XmlText) Set nod = .SelectSingleNode(NodePath) If Not nod Is Nothing Then GetXml = .Text End If End With End Function
[/vba]Я изменил патч, и получил результат
С патчем все нормально.Не находит такой элемент-вот и ошибка. Замените на этот код[vba]
Код
Function GetXml(ByVal XmlText As String, ByVal NodePath As String) As String
Debug.Print XmlText ' Посмотрите, что приходит в ответ With CreateObject("MSXML2.DOMDocument") .async = False .validateOnParse = False .LoadXML (XmlText) Set nod = .SelectSingleNode(NodePath) If Not nod Is Nothing Then GetXml = .Text End If End With End Function
Пришлите Ваш ID отсюда http://www.mikado-parts.ru/ws1/service.asmx?op=Get_MyIP я добавлю его в настройки сайта и у Вас появится доступ, будет легче искать решение. А пока не получается. Я вставляю Вашу функцию в код вместо прежнего варианта и при прогоне макроса в 3 столбец ничего не приходит, хотя "Готово!" вываливается
Пришлите Ваш ID отсюда http://www.mikado-parts.ru/ws1/service.asmx?op=Get_MyIP я добавлю его в настройки сайта и у Вас появится доступ, будет легче искать решение. А пока не получается. Я вставляю Вашу функцию в код вместо прежнего варианта и при прогоне макроса в 3 столбец ничего не приходит, хотя "Готово!" вываливаетсяalkar
Сообщение отредактировал alkar - Воскресенье, 19.09.2021, 23:16