具有偏移量和限制的XML数据绑定刷新

时间:2019-03-19 17:59:38

标签: excel xml vba api

我有一本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,仪表板和报告)。

不用说,我非常害怕必须进行所有这些更改并在接下来的两天内进行测试(请注意此提供者给我们的提前通知)。

关于如何实现此目标的任何想法?

预先感谢您的帮助!

0 个答案:

没有答案