我正在尝试创build一个macros,将IMDB.com的评级和总体评价拉到ex​​cel文件中

我有一个从A2:A966横跨一个工作表中的电影列表,我试图让这个过程工作,但是我的代码得到了一个运行时错误91.现在它要求一个电影名称的forms一个input框(从尽可能多的资源中拉出来,但我发现最有用的教程使用了一个input框),但理想情况下,它只是运行A2:A966中的电影列表,并将收视率的数据拖入B2 :966和总评分到C2:C966

Sub test() Dim eRow As Long Dim ele As Object Dim RowCount As Integer Set sht = Sheets("Sheet1") RowCount = 1 sht.Range("A" & RowCount) = "IMDB Rating" sht.Range("B" & RowCount) = "Total Reviews" eRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row Set objIE = CreateObject("InternetExplorer.Application") 'strSearch = Range("A2") moviename = InputBox("Enter movie name") With objIE .Visible = True .navigate "http://www.imdb.com/" Do While .Busy Or _ .readystate <> 4 DoEvents Loop Set nam = .document.getElementsByName("navbar-query") nam.Item(0).Value = moviename .document.getElementsByID("navbar-submit-button").Click .document.getElementsByID("result_text").Click Do While .Busy Or _ .readystate <> 4 DoEvents Loop For Each ele In .document.all Select Case ele.classname Case "Result" RowCount = RowCount + 1 Case "ratingValue" sht.Range("A" & RowCount) = ele.innertext Case "ratingCount" sht.Range("B" & RowCount) = ele.innertext End Select Next ele End With Set objIE = Nothing End Sub 

有几种方法可以实现这一点。 这是其中之一。 搏一搏:

 Sub imd_data() Dim IE As New InternetExplorer, html As HTMLDocument, ele As Object With IE .Visible = True .navigate "http://www.imdb.com/" Do Until .readyState = READYSTATE_COMPLETE: Loop Set html = .document End With html.getElementById("navbar-query").Value = "Blood Diamond" html.getElementById("navbar-submit-button").Click Application.Wait Now + TimeValue("00:00:05") html.getElementsByClassName("result_text")(0).getElementsByTagName("a")(0).Click Application.Wait Now + TimeValue("00:00:05") For Each ele In html.getElementsByClassName("imdbRating") With ele.getElementsByClassName("ratingValue") If .Length Then r = r + 1: Cells(r, 1) = .Item(0).innerText End With With ele.getElementsByClassName("small") If .Length Then Cells(r, 2) = .Item(0).innerText End With Next ele IE.Quit End Sub 

输出:

 8.0/10 434,144 
 Sub imd_data() Dim IE As New InternetExplorer, html As HTMLDocument, ele As Object With IE .Visible = True .navigate "http://www.google.com/" Do Until .readyState = READYSTATE_COMPLETE: Loop Set html = .document Set sht = Sheets("Sheet2") End With html.getElementById("lst-ib").Value = sht.Range("A2") & " IMDB" html.getElementById("btnK").Click Application.Wait Now + TimeValue("00:00:05") html.getElementsByClassName("rc")(0).getElementsByTagName("a")(0).Click Application.Wait Now + TimeValue("00:00:05") For Each ele In html.getElementsByClassName("imdbRating") With ele.getElementsByClassName("ratingValue") 'If .Length Then r = r + 1: Cells(r, 1) = .Item(0).innerText sht.Range("B2") = .Item(0).innerText End With With ele.getElementsByClassName("small") 'If .Length Then Cells(r, 2) = .Item(0).innerText sht.Range("C2") = .Item(0).innerText End With Next ele IE.Quit End Sub