Увеличить скорость импорта таблиц IE - PullRequest
0 голосов
/ 01 мая 2018

У меня есть этот код, который извлекает данные из уже открытого документа Internet Explorer. Проблема в том, что таблица огромна (30x5000), и для перемещения всех данных на лист с помощью циклов For требуется более 1 минуты. Я хотел бы получить эту передачу данных гораздо быстрее, если это возможно. Можно ли будет просто скопировать / вставить всю страницу в лист? Любые другие решения?

 Set doc = ie.Document
 Set hTable = doc.GetElementsByTagName("table")

 For Each tb In hTable

    Set hBody = tb.GetElementsByTagName("tbody")
    For Each bb In hBody

        Set hTR = bb.GetElementsByTagName("tr")
        For Each tr In hTR

             Set hTD = tr.GetElementsByTagName("td")
             y = 1 ' Resets back to column A
             For Each td In hTD
               ws.Cells(z, y).Value = td.innertext
               y = y + 1
             Next td
             DoEvents
             z = z + 1
        Next tr
        Exit For
    Next bb
Exit For
Next tb

1 Ответ

0 голосов
/ 05 мая 2018

Петли по своей сути медленные. Вы можете попробовать импортировать всю таблицу, используя Macro Recorder. Я не уверен, что это будет быстрее, хотя. Вы не указали URL, поэтому проверить эту концепцию невозможно. Если вы не можете ускорить его с помощью Excel, попробуйте сделать то же самое с помощью R или Python. Я лично испытал около 10 000-кратного улучшения и даже 100 000-кратного улучшения в нескольких процессах, использующих R или Python вместо Excel.

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