2016-07-24 70 views
1

我是VBA的新手,並且在搞清楚如何從網站boxofficemojo.com提取數據時遇到了很多麻煩。我試圖提取2010-2015年的每週數據。所以我發現了一個代碼,它沿着相同的方向做了一些改變,並且改變了它以適應我的需求。這是如下從一個網站的多個頁面導入數據

Sub Movies() 
Dim nextRow As Integer, i As Integer 
Application.ScreenUpdating = False 
Application.DisplayStatusBar = True 
For i = 1 To 52 
Application.StatusBar = "Processing Page " & i 
nextRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1 
With ActiveSheet.QueryTables.Add(Connection:= _ 
"URL;http://www.boxofficemojo.com/weekly/chart/?yr=2015&wk=&p=.htm" & i, _ 
Destination:=Range("A" & nextRow)) 

.Name = "weekly/chart/?yr=2015&wk=&p=.htm" 
.FieldNames = True 
.RowNumbers = False 
.FillAdjacentFormulas = False 
.PreserveFormatting = True 
.RefreshOnFileOpen = False 
.BackgroundQuery = True 
.RefreshStyle = xlInsertDeleteCells 
.SavePassword = False 
.SaveData = True 
.AdjustColumnWidth = True 
.RefreshPeriod = 0 
.WebSelectionType = xlSpecifiedTables 
.WebFormatting = xlWebFormattingAll 
.WebTables = "5" 
.WebPreFormattedTextToColumns = True 
.WebConsecutiveDelimitersAsOne = True 
.WebSingleBlockTextImport = False 
.WebDisableDateRecognition = True 
.WebDisableRedirections = False 
.Refresh BackgroundQuery:=False 
End With 
ThisWorkbook.Save 
Next i 
Application.StatusBar = False 
End Sub 

但是不要扯數據數週1 - 52的2015年,它保持對2016年的最新一週數據拉,重複其52倍。我不知道這裏有什麼問題,任何幫助都會真的很感激。

謝謝你的努力。

+0

如果您使用Excel 2010或更高版本,Power Query可能會更容易 – Slai

回答

1

你非常接近那裏。

調整在QueryTables.Add方法url字符串這樣的:

http://www.boxofficemojo.com/weekly/chart/?yr=2015&wk=" & i & "&p=.htm" 

既然你說你想要的2010至2015年。你可以用現有的循環另一個循環For x = 2010 to 2015內,然後修改URL到這一點:

http://www.boxofficemojo.com/weekly/chart/?yr=" & x & "&wk=" & i & "&p=.htm" 
+1

非常感謝。感謝你的幫助。 :) –