VBA – 使用IF函数浏览HTML表格

我在一个项目的最后,偶然发现了我最后的障碍。 我在一个Excel工作表中有一组电影,我正在查找BoxOfficeMojo.com并从中搜集大量数据。

我的问题可以用电影“唱歌”为例加以总结。 当我search这个标题时,我被引导到这个网页: http : //www.boxofficemojo.com/search/ ?q= sing 。 现在,我必须导航到电影专用页面的代码如下:

'open title page in box office Set Doc = objIE.Document Set oResult = Doc.getElementById("body").getElementsByTagName("a") For Each Element In oResult If Element.outerHTML Like "*/movies/?id=*" Then Set myLink = Element Exit For End If Next Element objIE.Navigate myLink 

该代码仅导航到第一个电影链接,这不是我想要的。 我只想点击一个链接,如果“生命周期总额”列不会说“不适用”。 理想情况下,这样的工作(IF函数中的新代码):

 'open title page in box office Set Doc = objIE.Document Set oResult = Doc.getElementById("body").getElementsByTagName("a") For Each Element In oResult If Element.outerHTML Like "*/movies/?id=*" And Element.Offset(0, 2).innerText <> "n/a" Then Set myLink = Element Exit For End If Next Element objIE.Navigate myLink 

这虽然不起作用。 任何想法,我怎么能做到这一点? 谢谢!

我build议循环遍历每个表格,直到find正确的表格,然后遍历每行,直到find符合条件的表格。

 Dim HTMLTable As Object Dim i As Long 'Loop through each table to find the right one For Each HTMLTable In Doc.getElementsByTagName("table") If Left(HTMLTable.Rows(0).Cells(0).innerText, 11) = "Movie Title" Then Exit For End If Next HTMLTable If Not HTMLTable Is Nothing Then 'table found For i = 1 To HTMLTable.Rows.Length - 1 'loop through each row and check gross column If HTMLTable.Rows(i).Cells(2).innerText <> "n/a" Then 'found row Set myLink = HTMLTable.Rows(i).Cells(0).getElementsByTagName("a")(0) 'get link myLink.Click 'click link Exit For End If Next i Else 'table not found MsgBox "The table was not found.", vbExclamation End If 

如果你使用的是早期的绑定,你可以像下面这样声明HTMLTable

 Dim HTMLTable As MSHTML.HTMLTable 

希望这可以帮助!