我有一本Excel XML工作簿,大约可来自我们的一家云服务提供商的40k条记录。 (实际上,其中有几个,但是这是我目前主要关注的问题。)我利用刷新的数据进行排序,添加一列,然后将每一行与从我们的ERP中提取的另一张表进行比较,然后发送XML POST进行更新任何变体项目/数量。
使用API作为数据源设置XML表:
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
增加直到我没有记录。问题是我在excel中将XML定义为特定表和数据源,以将所有记录拉入一个表中。
这是否意味着我需要为每个范围创建一个单独的数据源/连接和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 Map和Datasource / API调用,并且可以正确递增?我花了很长时间才设置了这些各种XML(我还在Power BI中将它们用于库存移动,机器零件BOM,仪表板和报告)。
不用说,我非常害怕必须进行所有这些更改并在接下来的两天内进行测试(请注意此提供者给我们的提前通知)。
关于如何实现此目标的任何想法?
预先感谢您的帮助!