У меня есть книга Excel XML, которая тянет ок.40 тысяч записей от одного из наших поставщиков облачных услуг.(На самом деле, некоторые из них, но в данный момент это моя главная проблема.) Я использую обновленные данные для сортировки, добавления столбца, затем сравниваю каждую строку с другой извлеченной таблицей из нашей ERP, затем отправляю XML POST для обновления.любые варианты предметов / количества.
Таблица XML настроена с API в качестве источника данных:
https://us.them.com/api/1.0/billofmaterials/
?auth=supersecretpassword&limit=99999&format=xml
Я настроил карту в Excel, выбрав только поля, необходимые для сравнения.В VBA я вызываю следующее и могу затем обработать всю таблицу обновленных данных:
ThisWorkbook.XmlMaps("L2LBOM").DataBinding.Refresh
Все было хорошо, это будет открываться и запускаться автоматически каждое утро через планировщик.
Вчера (18-го) мы получили уведомление, что 21-го числа мы будем ограничены извлечением 1000 записей за раз, то есть мне как-то придется переписать все мои источники данных и карты XML (?), Или рисунокспособ получить необходимое количество записей во что-то, что я могу обработать.
Поставщик сказал, что я могу сделать что-то вроде:
https://us.them.com/api/1.0/billofmaterials/?auth=xxx&offset=0&limit=1000
...us.them.com.../?offset=1000&limit=1000
...us.them.com.../?offset=2000&limit=1000
И увеличивать, пока я не получу никаких записей.Проблема в том, что у меня есть XML, определенный в Excel как конкретная таблица и источник данных, чтобы собрать все записи в одну таблицу.
Означает ли это, что мне нужно создать отдельный источник данных / соединение и таблицу XML для каждого диапазона, затем проанализировать обязательные поля для каждого, затем объединить ~ 40 таблиц, прежде чем я смогу выполнить свои сортировки и сравнения данных и сделатьмои посты?
Я предполагаю, что HTTP POST не нужно будет изменять, так как я делаю один для каждой строки, которая соответствует критериям.Это текущий код для POST:
Set objHTTP = CreateObject("WinHttp.WinhttpRequest.5.1")
URL =
"https://us.them.com/api/1.0/billofmaterials/inbound_location_quantity_
sync/?auth=supersecretpassword"
objHTTP.Open "POST", URL, False
objHTTP.SetRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.Option(6) = True
objHTTP.Option(12) = True
For Each RNG1 In mytable.Columns(9).Cells
Check = IsNumeric(RNG1.Rows.Offset(0, -6))
If Check Then
Match = RNG1.Rows.Offset(0, -6).Value
Else
Match = 0
End If
If RNG1.Value <> "MOHTQ" And RNG1.Value <> Match Then
Qty = RNG1.Value
Locn = RNG1.Rows.Offset(0, -1)
partnumber = RNG1.Rows.Offset(0, -5)
Site = RNG1.Rows.Offset(0, -8)
StrData = "quantity=" & Qty & "&site=" & Site & "&format=xml
&partnumber=" & partnumber & "&location=" & Locn & ""
objHTTP.send StrData
objHTTP.waitForResponse
End If
Next
Application.Goto Reference:="Select1"
End Sub
Есть ли способ, возможно, создать динамическую карту XML и вызов Datasource / API на лету, который будет правильно увеличиваться?Мне потребовалась целая вечность, чтобы настроить эти различные XML-файлы (я также использую их в Power BI для перемещения запасов, спецификации деталей машин, информационных панелей и отчетов).
Само собой разумеется, я волнуюсь по поводу необходимости внести все эти изменения и проверить в течение следующих двух дней (ЛЮБИТЕ предварительное уведомление, данное нам этим провайдером).
Любые идеио том, как я мог бы добиться этого?
Заранее благодарю за помощь!