2014-02-27 100 views
1

我想从互联网上的数据到Excel电子表格。也就是说,我希望在本赛季的所有17周(包括最终排名)中,获得过去12年来AP的25支NCAAF球队的名字。我的代码是基于关闭此教程:https://www.youtube.com/watch?v=7sZRcaaAVbgVBA运行时错误91对象变量未设置 - 我做错了什么?

我得到的错误在该行:

SchoolNames(iYear,iWeek,iRank)= TRIM(Doc.getElementsByTagName( “学校”)(iRank - 1 ).innerText)

这里是我的代码:


Option Explicit 

Sub Data_Collection() 

Application.ScreenUpdating = False 

Dim iYear     As Integer 
Dim iWeek     As Integer 
Dim IE      As New InternetExplorer 
Dim sYear     As String 
Dim sWeek     As String 
Dim SchoolNames(12, 17, 25) As String 
Dim Doc      As HTMLDocument 
Dim iRank     As Integer 


For iYear = 2002 To 2013 

sYear = CStr(iYear) 

    For iWeek = 1 To 17 

    If iWeek = 17 Then 
     sWeek = "1/seasontype/3" 
    Else 
     sWeek = CStr(iWeek) 
    End If 

    IE.Visible = False 
    IE.navigate "http://espn.go.com/college-football/rankings/_/poll/1/year/" & sYear & "/week/" & sWeek 

    Do 
     DoEvents 
    Loop Until IE.readyState = READYSTATE_COMPLETE 

    Set Doc = IE.Document 

    For iRank = 1 To 25 
     SchoolNames(iYear, iWeek, iRank) = Trim(Doc.getElementsByTagName("school")(iRank - 1).innerText) 
    Next iRank 

    Next iWeek 
Next iYear 


End Sub 

另外,我不知道即使我修复了运行时91错误,我将正确的东西传递给.getElementsByTagName()。有什么建议么?

+0

您应该通过标签名称,例如'a','div'等 – sam092

回答

1

你很接近,但需要做一些小的修改。

  1. SchoolNames(iYear,...iYear变量是四位数年份,但因此它需要在阵列中的位置要设置,而不是一年)的阵列
  2. 在具有学校信息的网页元素标记按类名不是TagName。更改为Doc.getElementsByClassName
  3. 确保你相当IE浏览器,所以它不会在后台IE.Quit

示例代码运行返回学校,在2002年排名11周名称:

Sub getSchoolName() 
    Dim IE As New InternetExplorer 

    IE.Visible = False 
    IE.navigate "http://espn.go.com/college-football/rankings/_/poll/1/year/2002/week/1" 

    Do 
     DoEvents 
    Loop Until IE.readyState = READYSTATE_COMPLETE 

    Set Doc = IE.Document 

    Dim schoolName As String 
    schoolName = Trim(Doc.getElementsByClassName("school")(0).innerText) 
    IE.Quit 

    MsgBox (schoolName) 
End Sub 

结果如下:

enter image description here


  • 请确保在项目中包含对enter image description here的引用。

这里是单向的一年重置为数组位置:

sYearCntr = iYear - 2002 
SchoolNames(sYearCntr, iWeek, iRank) = .... 
相关问题