以下是我目前正在努力实现的目标。我希望从我的梦幻棒球联赛中获取季节性数据。下面的代码遍历每个季节和每个团队,但数据非常混乱。我现在需要做的是清理数据以清理列。此外,由于球队和赛季没有附加到球员统计数据,我需要额外的列列出球队名称和赛季。有没有人有任何意见?
Sub Extract()
Dim IE As Object, obj As Object
Dim League As Object
Dim links, link
Dim dict As Object
Dim s As Integer
Dim t As Integer
Set IE = CreateObject("internetexplorer.application")
IE.Visible = True
IE.navigate ("http://whatifsports.com/hbd/Pages/Main/WorldRedirect.aspx?id=37")
WaitFor IE
IE.navigate ("http://whatifsports.com/HBD/Pages/World/Statistics.aspx")
WaitFor IE
For s = 1 To 36
s = CStr(s)
IE.document.getelementsbyname("ctl00$ctl00$ctl00$Main$PageOptionsPlaceHolder$PageOptionsPlaceHolder$SeasonDropDown$SeasonDropDown")(0).Value = s
For t = 1 To 32
IE.document.getelementsbyname("ctl00$ctl00$ctl00$Main$PageOptionsPlaceHolder$PageOptionsPlaceHolder$FranchiseDropDown$FranchiseDropDown")(0).selectedindex = t
IE.document.forms(0).submit
WaitFor IE
IE.ExecWB 17, 0
IE.ExecWB 12, 0
lastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1
Range("A" & lastRow).Select
ActiveSheet.PasteSpecial Format:="HTML", link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
WaitFor IE
Next t
Next s
End Sub
Sub WaitFor(IE As Object)
While IE.readyState <> 4
DoEvents
Wend
End Sub
答案 0 :(得分:0)
您必须创建parser。
一旦您的数据完全符合给定的一组列,那么您可以非常简单地在末尾添加额外的列。
您当前正在将清洁表发布到从A列第一个空行开始的范围。假设您的表格为10列宽。然后,您可以使用以下内容添加团队编号和季节编号:
Range(cells(lastRow, 11), cells(cells(lastRow, 10).end(xldown).row, 11)) = "Team " & t & ", Season " & s
要获得团队名称,我会使用数组,而不是每次都尝试从网页的下拉列表中读取它。我打算推荐这个有两个原因。 1)我没有相关的源信息。 2)我认为这是一个安全的假设,即在你将使用它的特定赛季中,球队名单不会有太大变化。
Dim strTeamNames as variant
strTeamNames = Array("", "Team 1", "Team 2", "Team 3", ..., "Team 32")
Range(cells(lastRow, 11), cells(cells(lastRow, 10).end(xldown).row, 11)) = strTeamName(t) & ", Season " & s