1

Первый таймер здесь, и я новичок в Excel 2013, так что если я где-то облажался, дайте мне знать!

Я пытаюсь собрать статистику из Детройт Ред Уингз за 1932-2014 гг. Недавно я узнал, что могу получать данные с веб-сайта через Данные-> Получить внешние данные-> Из Интернета.

До сих пор я открывал новый лист, извлекал данные в Excel и переименовывал лист в соответствии с годом

Ниже моя попытка петли, но она не работает

В идеале, если бы я запустил макрос, он создает новый лист, а затем заполняет данные для этого листа за каждый год с сезона 1932-33 до сезона 2013-2014 и переименовывает листы в соответствии с годами.

(Пример: я запускаю макрос, и он создает лист с названием «1932-33», извлекает данные с веб-сайта и помещает их в лист. Затем он создает лист с названием «1933-34», извлекает данные с веб-сайта и помещает их в лист)

Важными примечаниями здесь является веб-адрес сайта с 1932-33 сезона

http://www.whatifsports.com/nhl-l/profile_team.asp?hfid=11&season=1932-33

Я обнаружил, что для изменения года вы просто настраиваете «1932-33» в конце URL на любой год, который вы хотите.

Любая помощь приветствуется!

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

1 ответ1

0

Вы помещаете вокруг него цикл for, но никогда ни для чего не используете "i". Наверное, поэтому он не работает. ;)

Попробуйте что-то вроде этого (предупреждение, что это не проверено, и не реализована проверка ошибок преобразования):

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .