Как исправить ошибку времени выполнения 91 в скрипте Excel VBA - PullRequest
0 голосов
/ 15 ноября 2018

Я создал небольшой скрипт, который берет некоторые данные из таблицы веб-сайта и заполняет их в ячейки в Excel. Мне это нужно для того, чтобы упростить поиск по этим данным и их фильтрацию. Однако я столкнулся с небольшой проблемой: каждый раз, когда я запускаю свой сценарий, он выполняет то, что должен делать, для примерно 9-11 страниц (около 250 записей в ячейках), а затем останавливается с появлением сообщения об ошибке, говорящего об объекте «Ошибка выполнения 91». переменная или с блочной переменной не установлена. Он никогда не проходит до конца, и я получаю лишь небольшую часть данных, которые я должен был получить.

Я не эксперт по программированию и даже не эксперт по VBA, поэтому, если я делаю что-то не так, пожалуйста, дайте мне знать. Я застрял на этой проблеме в течение нескольких дней. Я не знаю, что делать, чтобы решить эту проблему. Я искал исправления в Google, YouTube и даже на собственном веб-сайте Microsoft, но не могу понять, почему эта ошибка появляется в моем собственном сценарии.

Я знаю, что эта проблема возникает, когда; 1) вы пытаетесь использовать переменную объекта, которая еще не ссылается на действительный объект, или когда 2) вы пытаетесь использовать переменную объекта, для которой было установлено значение Nothing. Но я не могу понять, в какой части моего кода я делаю эту ошибку. Помощь высоко ценится.


UPDATE: Когда я начинаю номер страницы, скажем, с 8 и до 15, у него нет проблем с извлечением этих данных с сайта, поэтому я не думаю, что это имеет какое-либо отношение к конкретным номерам страниц (я могу ошибаться в этом ). Но когда я устанавливаю номер страницы 17 вместо 15, сообщение об ошибке появляется почти сразу. Итак, может ли это быть диапазон между страницами, который вызывает это?

ОБНОВЛЕНИЕ 2: Это также противоречиво, когда всплывает сообщение об ошибке, когда я снова запускаю скрипт с теми же номерами страниц (от 8 до 17), он проходит весь процесс без сбоев. (Странно) Затем я изменяю номера страниц с (8 до 18), и он проходит через 2 страницы и останавливается.

ОБНОВЛЕНИЕ 3: Возможно ли, что это происходит, потому что меня ограничивают по скорости?

Sub GrabInfo()

    Dim objIE As InternetExplorer

    Dim r As Integer
    Dim p As Integer
    Dim c As Integer

    r = 0
    p = 0
    c = 0

    Dim sDD1 As String
    Dim sDD2 As String
    Dim sDD3 As String

    Set objIE = New InternetExplorer
    'objIE.Visible = True

    Do While p < 53
    p = p + 1

        'Setting row to zero after the new page loads but before the data gets pulled
        r = 0

        objIE.navigate "URLGOESHERE.com/123456789?pageNum=" & p
        Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

        Do While r < 25
        'Increment the row (gets reset after each page)
        r = r + 1
        'Increment the cell (never gets reset)
        c = c + 1

            'Pulling data from site row by row and setting each child to temp sDD strings
            sDD1 = objIE.document.getElementsByClassName("table-content")(r - 1).Children(0).innerText
            sDD2 = objIE.document.getElementsByClassName("table-content")(r - 1).Children(2).innerText
            sDD3 = objIE.document.getElementsByClassName("table-content")(r - 1).Children(3).innerText

            Debug.Print sDD1 & " | " & sDD2 & " | " & sDD3 & " - " & _
            "Cell # = " & c & " ROW # = " & r & " PAGE # = " & p

            'Filling in the temp sDD strings into excel cells
            Range("A" & (c + 1)).Value = sDD1
            Range("B" & (c + 1)).Value = sDD2
            Range("C" & (c + 1)).Value = sDD3

        Loop
    Loop

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...