Excelで作業している特定の問題を解決するために、VBAとXMLの基礎を自分自身で教えようとしています。私はAPIを使って緯度/経度のセンサスブロックIDを取得しようとしています。ここでVBAを使用してhtmlを解析しようとしています
はXMLコードです:私は仕事に行くことができます
<Response xmlns="http://data.fcc.gov/api" status="OK" executionTime="120">
<Block FIPS="120950170151016">
<intersection FIPS="120950170151016"></intersection>
<intersection FIPS="120950170151019"></intersection>
<intersection FIPS="120950170151015"></intersection>
</Block>
<County FIPS="12095" name="Orange"></County>
<State FIPS="12" code="FL" name="Florida"></State>
<messages>FCC0001: The coordinate lies on the boundary of mulitple blocks, first FIPS is displayed. For a complete list use showall=true to display 'intersection' element in the Block</messages>
<head></head>
</Response>
のみVBAコマンドは
のように、私についたままhtmlコードのたくさんの値を与えるblockID = Doc.getElementsByTagName("Block")(0).innerText
です
<Block FIPS="120950170151016">
私はgetAttributes関数(?)を使用する必要があるかもしれないと思われますが、そうではありません私はVBAを使用しているので、ドロップダウンのオプションとして表示されます。私は参照パッケージのいずれかがインストールされていないかどうか疑問に思います。
洞察?
編集:下の統計情報をありがとう。私はLoadXML()の代わりにLoad()を使用しようとしましたが、オブジェクトに情報を読み取っていないようです。エラーは "この操作を完了するために必要なデータはまだ利用できません"であり、コードがx値をループしようとすると発生します。 Localsビューアーからオブジェクトにデータがないことを確認します。私はあなたが行くような特性throught tranverse、あなたのコードをビルドするためにLocals
とImmediate
ウィンドウを使用する方法を示して2つのアニメーションGIFを持ってVBA XML parsing - looping through child nodesに私の答えで
Dim oAttribute, item
Dim x As Long
Dim apiURLstub, apiURL As String
apiURLstub = "http://data.fcc.gov/api/block/find?"
'append lat/lon info to URL
Dim lat As Double
Dim lon As Double
lat = Range("A3").Value
lon = Range("B3").Value
apiURL = apiURLstub & "latitude=" & lat & "&longitude=" & lon & "&showall=true"
Dim objXML As Object, node As Object
Set objXML = New MSXML2.DOMDocument
If Not objXML.Load(apiURL) Then 'strXML is the string with XML'
Err.Raise objXML.parseError.ErrorCode, , objXML.parseError.reason
Else
Set node = objXML.getElementsByTagName("intersection")
For x = 0 To node.Length - 1
For Each oAttribute In node(x).Attributes
Debug.Print oAttribute.Value
Next
Next
End If
XML!= HTML。代わりに[Microsoft.XMLDOM](https://msdn.microsoft.com/en-us/library/aa468547.aspx)を使用してください。 – Comintern
[Regex](http://stackoverflow.com/a/1732454/1641172)を使ってみましたか? –
XML。私のばかげた質問にお答えいただきありがとうございます! – jer312