Html 使用VBA(不带任何名称/ID)从网站上的表中提取值

Html 使用VBA(不带任何名称/ID)从网站上的表中提取值,html,excel,vba,internet-explorer,html-table,Html,Excel,Vba,Internet Explorer,Html Table,我正在使用VBA尝试从县评估员的站点检索数据。我在其他部分中使用了getElementByName/ID等,但似乎没有标识符,数据只是在一个普通的网格中。是否有其他方法检索此数据?这个网页上还有其他几个网格,所以我觉得很难找到 以下是HTML源代码: <div class="grid"> <table class="colborder w95"> <caption>Current Values</caption&g

我正在使用VBA尝试从县评估员的站点检索数据。我在其他部分中使用了getElementByName/ID等,但似乎没有标识符,数据只是在一个普通的网格中。是否有其他方法检索此数据?这个网页上还有其他几个网格,所以我觉得很难找到

以下是HTML源代码:

<div class="grid">
<table class="colborder w95">
<caption>Current Values</caption>
<thead><tr class="allborder"><th class="toleft">Type</th><th class="toleft">Class</th><th class="toright">Kind</th><th class="number">Land</th><th class="number">Bldg</th>
<th class="number">Total</th></tr>
</thead>
<tbody>
<tr class=" ">
<td class="tobottom toleft " >2020&#160;Value</td>
<td class="tobottom toleft rowborder" >Residential</td>
<td class="toright rowborder">Full</td>
<td class="number rowborder">$73,600</td>
<td class="number rowborder">$225,300</td>
<td class="number rowborder">$298,900</td></tr>

当前值
类型:兰德大厦
全部的
2020 价值
住宅的
满满的
$73,600
$225,300
$298,900
我试图提取的数字是表的右下角,在本例中是298900美元。我能想到的唯一区别这一部分的是“当前值”,它是网格的标题。如何使用此标题定位表并从右下角提取值

任何帮助都将不胜感激


乔尔

像这样的东西有点笨重,但对我有用:

Dim doc作为新的HTMLDocument,tbl作为对象,tbl作为对象
doc.body.innerHTML=Range(“A2”)。将“您的示例HTML”与“关闭”一起赋值。。。
Set tbls=doc.getElementsByTagName(“表”)
对于tbl中的每个tbl
如果tbl.Caption.innerHTML=“当前值”,则
调试.打印tbl.行(1).单元格(5).内部文本
退出
如果结束
下一个tbl

下面是从HTML表中获取特定单元格数据的替代方法

如果元素不包含ID、名称或任何其他属性,则可以尝试通过标记名
访问该元素

之后,可以使用其索引键值引用特定元素。请注意,索引键从0开始

示例代码:

Sub demo()
 Dim IE
 Dim ro As Integer
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    IE.navigate "https://Your_site_address_will_be_here"

    Do While IE.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop
          
    Set Table = IE.document.getElementsByTagName("table")
    Set tRows = Table(0).getElementsByTagName("tr")
               
     ro = 1
     For Each r In tRows
          Set tcells = r.getElementsByTagName("td")
            For Each c In tcells
                If ro = 6 Then
                Debug.Print (c.innerText)
                ro = 0
                End If
                ro = ro + 1
            Next
     Next
         
End Sub
输出:


此外,您可以根据自己的要求修改代码示例。

很抱歉使用OT Deepak MSFT,但是您可以告诉我您使用哪个程序创建动画gif以供解释吗?您可以通过在搜索引擎中搜索屏幕录制器gif maker轻松找到所需的应用程序。让我们知道,上述代码是否适用于您。谢谢。我总是在谷歌上搜索屏幕录像机,找到录制mp4的工具。然后我向你要动画GIF,你告诉我向谷歌要动画GIF。有时候我的大脑对我自己来说是个谜。代码对我来说很有用。但是,我已经完成了变量声明,必须通过GUID
Set IE=GetObject(“new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}”)初始化IE
,但这是HTML文件本地调用的原因。在提供的HTML中,我还关闭了打开的标记。由于Joel Unick也希望从其他表中获取数据,我不确定这个解释对他是否足够。但要获得更详细的答案,HTML代码段太小了。@Zwenn,对不起。我以为你是op,我和你确认了解决方案。谢谢你的帮助!我最终遇到了运行时错误,但我保证这是我的错。说到这件事,我是个新手。我用迪帕克的方法得到的。