繁体   English   中英

使用Doc.getElementsByTagName时,VBA返回[对象]。 从浏览器找不到正确的TagName

[英]VBA returns [object] when using Doc.getElementsByTagName. Can't locate correct TagName from browser

我无法从Chrome找到正确的标签名称。 当我运行以下代码时,返回的所有内容都是“ [object]”。 有人建议在正确的领域提出建议吗?

这是我正在尝试获取信息的网站 特别是人口普查领域,但在这一点上,如果有人可以告诉我如何返回任何信息,我将挖掘正确的信息。

这是我的代码,当前将输出运行到MsgBox只是为了找到正确的字段。 从那里,我将重新启用for语句,并使VBA中的URL动态化。 还要注意,我尝试使用getElementsByName但那里也没有进展:

Sub censusTract()
Dim sht As Worksheet
Dim lastRow As Long

Set sht = ActiveWorkbook.Sheets("Sheet1")
lastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row

'For i = 2 To lastRow
 Dim IE As New InternetExplorer
 'IE.Visible = True
 IE.navigate "http://geocoding.geo.census.gov/geocoder/geographies/address?street=1308+Lapwing+Rd&city=Edmond&state=OK&zip=73003&benchmark=4&vintage=4"
 Do
 DoEvents
 Loop Until IE.readyState = READYSTATE_COMPLETE
 Dim Doc As HTMLDocument
 Set Doc = IE.document
 Dim sDD As String
 'sDD = Doc.getElementsByTagName("br")(0)
 sDD = Doc.getElementsByName("pl_gov_census_geo_geocoder_domain_AddressResult")(0)
 MsgBox sDD
 'IE.Quit
 'sht.Cells(i, 41).Value = sDD
'Next i
End Sub

你很亲密 您需要做的就是从对象中提取正确的数据。 您可以使用以下之一

sDD = Doc.getElementsByName("pl_gov_census_geo_geocoder_domain_AddressResult").item(0).innerText
sDD = Doc.getElementsByName("pl_gov_census_geo_geocoder_domain_AddressResult").item(0).innerHTML
sDD = Doc.getElementsByName("pl_gov_census_geo_geocoder_domain_AddressResult").item(0).outerHTML

现在,它只是拉对象,添加innerText,innerHTML或outsideHTML应该拉您的结果。

提取结果后,您可能需要将结果拆分为一个数组,以便可以对每个元素进行所需的操作。 以下代码应该可以帮助您入门。

Sub censusTract()
Dim sht As Worksheet
Dim lastRow As Long, v As Variant, block As Variant, x As Integer


Set sht = ActiveWorkbook.Sheets("Sheet1")
lastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row

'For i = 2 To lastRow
 Dim IE As New InternetExplorer
 'IE.Visible = True
 IE.navigate "http://geocoding.geo.census.gov/geocoder/geographies/address?street=1308+Lapwing+Rd&city=Edmond&state=OK&zip=73003&benchmark=4&vintage=4"
 Do
 DoEvents
 Loop Until IE.readyState = READYSTATE_COMPLETE
 Dim Doc As HTMLDocument
 Set Doc = IE.document
 Dim sDD As String
 'sDD = Doc.getElementsByTagName("br")(0)
 sDD = Doc.getElementsByName("pl_gov_census_geo_geocoder_domain_AddressResult").Item(0).innerText
 block = Split(sDD, vbLf)
 x = 2 'start column
 For Each v In block
  If v <> "" Then
    Cells(i, x).Value = v
    x = x + 1
  End If
Next v
 'IE.Quit
 'sht.Cells(i, 41).Value = sDD
'Next i
End Sub

如果您有任何疑问,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM