有没有一种方法可以使用VBA访问网站列中的第一个元素?

时间:2019-06-28 19:50:56

标签: html excel vba internet-explorer web-scraping

这是网站页面中某列的屏幕截图。

它以这种方式位于网站页面中:

enter image description here

如您所见,所有行都有一个“已完成”按钮,您可以按此按钮,然后按几行。这些行引用导出。因此,该列不是静态的,并且一直在变化。

但是,每次我运行宏时,我都想访问该列的第一行。

以下是上面的屏幕快照中第一个“已完成”按钮的HTML代码的示例代码: enter image description here

我有很多具有相同班级名称的人。以高亮显示的行为例,如下图所示: enter image description here

我真的不知道如何编写VBA代码来始终访问此列中的第一个“已完成”字节。

PS:在HTML代码中,标记“ a”中的onclick =“ .....”在不断变化。因此,我不能将其用作访问所需字段并单击所需按钮的参数。

请任何人帮助我弄清楚该怎么做,我真的很高兴。

谢谢:)

2 个答案:

答案 0 :(得分:0)

<tr>标签是行,<td>标签是这些行内的单元格。您没有提供足够的代码来显示整个表,但是通常来说,要访问表的第一行,您需要引用集合对象并使用所需的索引号。

.getElementsByTagName("tr")(0)

这将引用表的第一行。与在表格的第一行中获取第一列 相同:

.getElementsByTagName("tr")(0).getElementsByTagName("td")(0)

一旦您找到了特定的单元格,现在您想要单击链接。您可以使用与上述相同的方法。

.getElementsByTagName("tr")(0).getElementsByTagName("td")(0).getElementsByTagName("a")(0).Click

最后要注意的是,表的第一行可能是标题,因此您实际上可能需要第二行(1)


感谢您使用更多的HTML代码进行更新。我将略微切换齿轮,并使用querySelector()来抢占主桌。

doc.querySelector("#divPage > table.advancedSearch_table > tbody"). _
            getElementsByTagName("tr")(3).getElementsByTagName("td")(3).Children(0).Click

看看这是否适合您。

答案 1 :(得分:0)

如果要单击第一列中的“完成”按钮,则可以使用以下代码:

Set doc = objIE.Document
doc.getElementsByTagName("tr")(0).getElementsByTagName("td")(0).getElementsByTagName("a")(0).Click

代码在其中获得第一个<tr>,然后得到第一个<td>,然后得到<a>

相关问题