我需要在调用api后在excel上发出状态消息

时间:2018-05-14 14:16:34

标签: excel vba excel-vba

我需要在调用api后在excel上发出状态消息。 xml格式的状态消息,以便如何准确地解析数据。

以下给出的代码用于获取API信息

 Sub Test()
 Dim xmlHTTP As Object
 Set xmlHTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0")

 myURL = "http://xxxxxxxxxxxxx:15555/gateway/StatusTracking/1.0/shipment/tracking?housebill=cvvvv"
 xmlHTTP.Open "GET", myURL, False
 xmlHTTP.SetRequestHeader "APIKey", "xxxx-xxx-xxxxx-xxxx-xxxx"
 xmlHTTP.SetRequestHeader "Accept", "application/json"
 xmlHTTP.Send
 Dim strReap As String
  strReap = hReq.ResponseText
  Dim xmlDoc As New MSXML2.DOMDocument
 If Not xmlDoc.LoadXML(strReap) Then

  MsgBox "Load error"
 End If
 Dim xnodelist As MSXML2.IXMLDOMNodeList

 Set xnodelist = xmlDoc.getElementsByTagName("ShipmentTracking")  
 Dim xnode As MSXML2.IXMLDOMNode Set xnode = xnodelist.Item(0)   
Dim obAtt1 As MSXML2.IXMLDOMAttribute   
 Dim obAtt2 As MSXML2.IXMLDOMAttribute
 Dim xChild As MSXML2.IXMLDOMNode
 Dim intRow As Integer
 intRow = 2
 Dim strCol1 As String
  strCol1 = "A"
  Dim strCol2 As String
  strCol1 = "B"
 Dim Shipment As String
 For Each xChild In xnode.ChildNodes
 Set obAtt1 = xChild.Attributes.getNamedItem("Shipment")
 ws.Cells(intRow, 2) = obAtt1    
 intRow = intRow + 1   
 Next xChild
 Set hReq = Nothing
 Set xmlDoc = Nothing
 End Sub

下面给出的正常xml状态消息格式

<Shipment tracking>

<type/>
 <object/>

<properties/>

<Shipment>

<Origin/>
<type/>
<properties/>
<LocationCode/>
<CountryCode/>
</Shipment> 
</Shipment tracking>

我是vba编程的新手,我尝试使用此代码,但工作不正常。我只想要输出,从发货(xmltagname)到excel表结束。请帮帮我

1 个答案:

答案 0 :(得分:0)

您实际上没有属性时编写了代码Attributes.getNamedItem。另外,要查询我更喜欢selectNodesselectSingleNode而不是getElementsByTagName的元素。

所以试试

xChild.selectSingleNode("Shipment")

并将接收变量的声明从IXMLDOMAttribute更改为IXMLDOMElement