Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2015, 15:16   #1
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию Критерий для количества данных на веб-странице

Добрый день, уважаемые форумчане.

Я стараюсь подгрузить данные с одного большого архивного сайта.
Данные на этом сайте размещаются на отдельных страницах page с 1 по 9965 (http://www.kicktraq.com/archive?page=8697), причем на одной странице бывает максимум 15 записей. У меня есть макрос, который с этой задачей справляется если данных на странице ровно 15. Но если их меньше то, он постоянно вылетает.
Код:
Sub list()
'
' list 
'

    Dim sURI, h As String, htmlcode As String, i, j, k As Long
    k = 0
    For j = 1 To 9965
        sURI = "http://www.kicktraq.com/archive?page=" & j
         With CreateObject("MSXML2.XMLHTTP")
            .Open "GET", sURI, False
            .Send
            htmlcode = .ResponseText
        End With
        For i = 1 To 15
            Cells(k + i + 5, 1).FormulaR1C1 = k + i
            descr$ = Split(Split(htmlcode, "project-infobox")(i), "><")(1)
            Cells(k + i + 5, 2).FormulaR1C1 = descr$
            descr$ = Split(Split(htmlcode, "project-infobox")(i), "><")(2)
            Cells(k + i + 5, 3).FormulaR1C1 = descr$
            descr$ = Split(Split(htmlcode, "project-details")(i), "br")(1)
            Cells(k + i + 5, 4).FormulaR1C1 = descr$
            descr$ = Split(Split(htmlcode, "project-details")(i), "<br")(3)
            Cells(k + i + 5, 5).FormulaR1C1 = descr$
            descr$ = Split(Split(htmlcode, "project-cat")(i), """")(2)
            Cells(k + i + 5, 6).FormulaR1C1 = descr$
            descr$ = Split(Split(htmlcode, "project-infobox")(i), """")(2)
            Cells(k + i + 5, 16).FormulaR1C1 = descr$
        Next i
        k = i * j - j
    Next j
    

'
End Sub
Подскажите, пожалуйста, можно ли как-нибудь заранее определить кол-во записей на странице, чтобы использовать, например, цикл while или как-нибудь по другому обойти ошибку, когда записей меньше 15.

Заранее большое спасибо.
mephist вне форума Ответить с цитированием
Старый 20.01.2015, 15:33   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

может так:
Код:
For i = 1 To ubound(Split(htmlcode, "project-infobox"))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 20.01.2015, 17:46   #3
mephist
Форумчанин
 
Регистрация: 01.05.2009
Сообщений: 200
По умолчанию

Большое спасибо. все отлично получилось
mephist вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Настройка количества сообщений на странице форума min@y™ О форуме и сайтах клуба 6 16.09.2014 13:31
Как добиться, чтобы при изменении шапки на одной веб-странице шапка на всех веб-страницах менялась автоматически? Michael_Ardan HTML и CSS 4 23.02.2013 13:50
ЕКСЕЛЬ файл в веб странице Slavatron1984 Microsoft Office Excel 2 16.08.2012 16:31
анимация на веб странице LENA_M HTML и CSS 7 25.04.2012 15:40
Круговая диаграмма на веб-странице LENA_M JavaScript, Ajax 2 24.05.2011 00:49