卡在尝试使用VBA解析HTML上。

9 浏览
0 Comments

卡在尝试使用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

0
0 Comments

在我回答“VBA XML解析-循环遍历子节点”的问题时,我贴出了两个动画GIF,展示了如何使用“Locals”和“Immediate”窗口来遍历属性并逐步构建代码。

该问题涉及到使用VBA解析HTML的困难。问题中提供了一个VBA代码示例,但无法从URL中读取XML数据。代码中使用了“LoadXML”方法,但无法将任何信息读取到对象中。

问题的原因可能是URL链接无效或没有正确加载XML数据。解决方法可能是检查URL链接是否正确,并确保XML数据可以被加载。可以尝试使用其他方法来加载XML数据,如使用“Load”方法,或者检查代码中是否存在其他错误导致无法加载数据。

希望这个回答对初学者有帮助。

0