我正在创建一个小宏来从网站中检索数据,该网站的行数为30行。
问题在于,当我循环时,循环的每次迭代都会将数据放在右边的列而不是下面。我的意思是,我的查询从第A列到第Q列检索数据,直到第30行。当我得到下一次迭代时,我希望它得到列A到Q但从第31行到第61行。
它是从列R到...... XX直到第30行。 我想问题可能出在Destination:= Range ...
Sub Extract_data_table()
'
' Extract_data_table Macro
' For i = 1 to 41
For x = 1 To 41
Z = (x * 30) - 29
Worksheets("NHL_results_RS").Select
Worksheets("NHL_results_RS").Activate
mystr = "URL;http://www.nhl.com/stats/game?fetchKey=20062ALLSATALL&viewName=summary&sort=gameDate&gp=1&pg=" & x
With ActiveSheet.QueryTables.Add(Connection:= _
**mystr, Destination:=Range("$A$1"))**
'.CommandType = 0
.Name = _
"game?fetchKey=20062ALLSATALL&viewName=summary&sort=gameDate&gp=1&pg=1_2"
.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 = xlWebFormattingNone
.WebTables = "3"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
Next x
End Sub
你们有人可以帮忙吗?
答案 0 :(得分:0)
你认为问题出在Destination
是正确的。我从未使用过这个命令,但经过一些简短的实验后,我已经扣除了如果Destination
被占用,它会将数据粘贴到最近的合适空间中 right 你原来的目的地。
要绕过此操作,您应该根据迭代器在目标范围中添加Offset
,在您的示例中为x
。
我做的是:
Destination:=Range("$A$1").Offset((x - 1) * 31, 0))
这样可行,但您会注意到您将重复列标题,因此我猜您还需要尝试.FieldNames
。