Увеличить скорость импорта таблицы IE

У меня есть этот код, который извлекает данные из уже открытого документа 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

Добро пожаловать на сайт! Ознакомьтесь с тур и страница с инструкциями, чтобы узнать больше о том, как задавать вопросы, на которые можно получить качественные ответы. Вы можете отредактируйте свой вопрос, чтобы включить дополнительную информацию. Не удивляйтесь, если ваш вопрос будет перемещен в Проверка кода - часто работающий код, нуждающийся в улучшении, лучше обрабатывать там. Что касается этого, вы можете использовать XSLT для визуализации CSV таблицы, а затем импортировать этот файл.

cxw 01.05.2018 14:26

Запишите все данные в массив, а затем один раз напишите в лист Excel.

Ryan Wildry 01.05.2018 21:12

1) Есть ли URL-адрес, которым можно поделиться 2) Если этот код работает как есть, то, как упоминалось выше, возможно, он больше подходит для проверки кода в качестве проблемы оптимизации?

QHarr 05.05.2018 20:23
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
3
52
1

Ответы 1

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

Другие вопросы по теме