2016-04-21 29 views
0

Web上にXMLデータがあります。Excel VBA XML Webクエリから複数のセルに値を返す

 A  B 
1 ItemID buy/max 
2 34  =ImportXML("https:// ... &typeid=34", "//buy/max") 
3 35 

機能は、次のようになります。SINGLE値(例えば、最も高い買い注文)を取得するための関数の

https://api.eve-central.com/api/marketstat?regionlimit=10000002&typeid=34

起動:これらは、価格とゲームアイテム内の価格データです

Function ImportXML(url As String, query As String) 

Dim document As MSXML2.DOMDocument60 
Dim http  As New MSXML2.XMLHTTP60 

http.Open "GET", url, False 
http.send 

Set document = http.responseXML 

ImportXML = document.SelectSingleNode(query).nodeTypedValue 

End Function 

1つの値で問題ありません。私が500アイテムを持っていれば、データを取得する時間は非常に長くなります。 は、複数のセルを移入するには(この場合は2つだけで)私たちは&型IDを追加することにより、入力リンクを変更する必要がある= 35:そのリンクで

https://api.eve-central.com/api/marketstat?regionlimit=10000002&typeid=34&typeid=35

私はのMsgBoxに2つの値を得ることができます。しかし、私はそのデータに取り組む必要があるので、セル内にそれが必要ですB3。 今のコードは次のようになります。私は、細胞内にクエリからのデータを書き込むしようとしているときに

Function ImportXML(url As String, query As String) 

Dim document As MSXML2.DOMDocument60 
Dim http  As New MSXML2.XMLHTTP60 

http.Open "GET", url, False 
http.send 

Set document = http.responseXML 

Dim R As Integer 
Dim C As Integer 
R = ActiveCell.Row       '<- these variables are for changing' 
C = ActiveCell.Column      '<- output cell' 

Set xmlNodeList = document.SelectNodes(query) 
For Each xmlNode In xmlNodeList 
    Cells(R, C) = xmlNode.nodeTypedValue '<- THIS LINE CAUSE AN ERROR' 
    'MsgBox xmlNode.nodeTypedValue   <- if that line is active I got correct result' 
    R = R + 1         'but in MsgBox' 
Next xmlNode 

End Function 

問題があります。私が達成しようとしている何 はGoogleスプレッドシートWebサービスからIMPORTXML機能に同様の現象です。 私はExcel 2013を持っていないので、WEBSERVICE機能またはFILTERXMLおよびXPathを使用することはできません。 私はVBAで決してコードしていません。 ここに最終コードを書くことができれば、私は感謝しています。あなたの行がエラーを与えるため

答えて

0

Cells(R, C) = xmlNode.nodeTypedValue 

あなたの代わりにこれを試すことができます:

Cells(R, C).Value = CStr(xmlNode.nodeTypedValue) 
関連する問題