卡在尝试使用VBA解析HTML上。
卡在尝试使用VBA解析HTML上。
我正在尝试自学VBA和XML的基础知识,以解决我在Excel中遇到的特定问题。我试图使用API根据经纬度获取人口普查区块ID。
以下是XML代码:
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
我唯一能够使用的VBA命令是
blockID = Doc.getElementsByTagName("Block")(0).innerText
,
这给我返回了带有大量HTML代码的值,例如
搜索后,似乎我可能需要使用getAttributes函数(?),但是在我使用VBA时,它似乎不是下拉菜单中的选项。这让我想知道是否我没有安装其中一个引用包。
有什么见解吗?
编辑:谢谢下面的见解。我尝试使用Load()而不是LoadXML(),但似乎仍无法将任何信息读入对象。错误是“完成此操作所需的数据尚不可用”,并且发生在代码尝试循环遍历x值时。从Locals查看器中清除,对象中没有数据。以下是我的代码:
Dim oAttribute, item Dim x As Long Dim apiURLstub, apiURL As String apiURLstub = "http://data.fcc.gov/api/block/find?" '将纬度/经度信息添加到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是带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
在我回答“VBA XML解析-循环遍历子节点”的问题时,我贴出了两个动画GIF,展示了如何使用“Locals”和“Immediate”窗口来遍历属性并逐步构建代码。
该问题涉及到使用VBA解析HTML的困难。问题中提供了一个VBA代码示例,但无法从URL中读取XML数据。代码中使用了“LoadXML”方法,但无法将任何信息读取到对象中。
问题的原因可能是URL链接无效或没有正确加载XML数据。解决方法可能是检查URL链接是否正确,并确保XML数据可以被加载。可以尝试使用其他方法来加载XML数据,如使用“Load”方法,或者检查代码中是否存在其他错误导致无法加载数据。
希望这个回答对初学者有帮助。