-1

Я пытаюсь запустить этот макрос в Excel, который извлекает данные с веб-сайта в цикле. Есть одна таблица, которую мне нужно извлечь из каждой из 50 веб-страниц, и есть цикл для запуска функции, которая извлекает данные из каждого веб-сайта.

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

Код ошибки, который я получаю: Run Time Error '5' Недопустимая процедура или аргумент

Строка, которую он выделяет, является ".CommandType = 0 "

2 ответа2

1

Из записи MSDN относительно QueryTable.Свойство CommandType (Excel):

Вы можете установить свойство CommandType, только если значение свойства QueryType для таблицы запросов или кэша сводной таблицы равно xlOLEDBQuery.

Вы не делаете OLEDB-запрос, поэтому QueryType - это нечто другое. Поскольку это что-то другое, вы не можете установить CommandType, поэтому просто удалите его.

0

Я получал то же самое "Ошибка времени выполнения 5". Код для запроса веб-страницы изначально создавался путем записи макроса при создании запроса в пользовательском интерфейсе Excel. Вы могли бы подумать, что все параметры заполнены правильно! Я закомментировал ".CommandType = 0 "и запрос работает.

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