VBA查询表循环将检索到的数据放在不正确的单元格中

时间:2015-04-26 10:39:12

标签: excel vba excel-vba

我正在创建一个小宏来从网站中检索数据,该网站的行数为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

你们有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

你认为问题出在Destination是正确的。我从未使用过这个命令,但经过一些简短的实验后,我已经扣除了如果Destination被占用,它会将数据粘贴到最近的合适空间中 right 你原来的目的地。

要绕过此操作,您应该根据迭代器在目标范围中添加Offset,在您的示例中为x

我做的是:

Destination:=Range("$A$1").Offset((x - 1) * 31, 0))

这样可行,但您会注意到您将重复列标题,因此我猜您还需要尝试.FieldNames