0

Web 上に XML データがあります。これらは、ゲーム内アイテムの価格と価格データです。

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

関数を呼び出してSINGLE値を取得します (たとえば、最高の買い注文):

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

関数は次のようになります。

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 つだけ) を入力するには、&typeid=35を追加して入力リンクを変更する必要があります。

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

そのリンクを使用すると、2 つの値をMsgBoxに取得できます。しかし、そのデータで作業する必要があるため、セル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関数またはFILTERXMLXPathを使用できません。VBAでコーディングしたことはありません。ここに最終的なコードを入れていただければ幸いです。

4

1 に答える 1

0

エラーが発生した行の場合:

Cells(R, C) = xmlNode.nodeTypedValue

代わりにこれを試すことができますか:

Cells(R, C).Value = CStr(xmlNode.nodeTypedValue)
于 2016-06-13T07:43:50.883 に答える