Usando um loop para extrair dados para o excel

1

primeiro temporizador aqui e eu sou novo no Excel 2013, então se eu estragar em algum lugar, me avise!

Estou tentando reunir estatísticas do Detroit Red Wings de 1932-2014 Recentemente aprendi que posso extrair dados de um site via Data- > Obter dados externos > De Web

Até agora eu tenho aberto uma nova planilha, puxando os dados para o Excel e renomeando a planilha para corresponder ao ano

Abaixo está minha tentativa de loop, mas não está funcionando

O ideal seria acontecer Eu corro uma macro e ela cria uma nova planilha e, em seguida, preenche os dados dessa planilha, para cada ano da temporada de 1932-33 até a temporada 2013-2014 e renomeia as planilhas para corresponder aos anos.

(EX: Eu executo a macro e ela cria uma planilha chamada "1932-33" puxa os dados do site e os coloca na planilha. Em seguida, cria uma planilha intitulada "1933-34", que extrai os dados do site e coloca na folha)

Notas importantes aqui está o endereço do site com a temporada 1932-33

link

Descobri que, para alterar o ano, basta ajustar o "1932-33" no final do URL para o ano que você quiser.

Qualquer ajuda é apreciada!

Sub firstLoopAttempt()
'
' firstLoopAttempt Macro
'

'
Dim i As Integer

For i = 1942 To 2014

    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.whatifsports.com/nhl-l/profile_team.asp?hfid=11&season=1942-43" _
        , Destination:=Range("$A$1"))
        .CommandType = 0
        .Name = "profile_team.asp?hfid=11&season=1942-43"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
    Next i
    ActiveCell.FormulaR1C1 = ""
    Range("C1").Select
    ActiveCell.FormulaR1C1 = ""
    Range("C3").Select
    ActiveCell.FormulaR1C1 = ""
    Range("B5").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A8").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A4").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A3").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A25").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A29").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A30").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A31").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A32").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A33").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A34").Select
    ActiveCell.FormulaR1C1 = ""
    Cells.Replace What:="View Player Profile on Hockey-Reference.com", _
        Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:= _
        False, SearchFormat:=False, ReplaceFormat:=False
    Columns("A:A").Select
    Range("A4").Activate
    Selection.ColumnWidth = 21.91
    Columns("B:B").Select
    Range("B4").Activate
    Selection.ColumnWidth = 4.09
    Columns("C:C").Select
    Range("C4").Activate
    Selection.ColumnWidth = 3.09
End Sub
    
por user3481670 27.11.2014 / 20:48

1 resposta

0

Você coloca um loop for ao redor dele, mas nunca usa "i" para nada. É provavelmente por isso que não está funcionando. ;)

Tente algo assim (o aviso não foi testado e não foi implementada nenhuma verificação de erros de conversão):

Dim startYear As Integer
Dim endYear As Integer
Dim strStartYear as String

For startYear = 1942 To 2014

    ' Convert the current start year number to a string, then take the last two characters and assign to strStartYear
    ' So 1942 becomes "42".
    strStartYear = Right(CStr(startYear),2)
    ' Convert the string back into an (integer) number, and add 1 to create the End year.
    endYear = CInt(strStartYear)+1

    ' Use these variables in your other commands to specify the start/end year
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.whatifsports.com/nhl-l/profile_team.asp?hfid=11&season=" & startYear & "-" & endYear _
        , Destination:=Range("$A$1"))
        .CommandType = 0
        .Name = "profile_team.asp?hfid=11&season=" & startYear & "-" & endYear
        'other stuff omitted  for brevity
    End With
Next startYear
    
por 27.11.2014 / 22:45