#excel #vba #vsto
#excel #vba #vsto
Вопрос:
Есть ли у кого-нибудь идеи относительно того, почему Excel из VBA стал намного медленнее с Excel 2013? Есть ли что-то, что можно с этим сделать?
Например
application.ScreenUpdating=SS: t=timer: for x=1 to 1000: cells(2,2)=x: next x: ? timer -t
SS = true: Excel 2013: 1,3 секунды; Excel 365: 39 секунд (!)
SS = false: Excel 2013: 0.35: Excel 365: 36
t = timer: for x=1 to 1000000: z=cells(14,10): next x: ? timer - t
Excel 2013: 2.6; Excel 365: 5.1; Не так уж и плохо, всего в два раза быстрее.
Базовый пустой цикл VBA кажется примерно одинаковым для обоих, поэтому я сомневаюсь, что проблема в самом VBA, а скорее в COM и т. Д. Я ожидал бы аналогичных результатов с VSTO.Net .
Время, которое я измеряю, похоже, несколько меняется при каждом запуске, который я пытаюсь выполнить.
Я не уверен, когда это произошло на самом деле, поскольку в Excel больше нет номеров версий, но это был сентябрь 2020 года, сборка 13127.
Может быть, они реагируют на жалобы на то, что их JavaScript работает намного медленнее, замедляя работу VBA?
ОБНОВЛЕНИЕ: добавлено обновление экрана.
Комментарии:
1. В Excel 365 вообще нет воспроизведения, сборка 13304.20000.
2. @BigBen попробуйте открыть большую книгу. Затем запустите это в пустой книге. Кажется, что простое открытие большой книги резко меняет время. С Xl2010 по 365.
Ответ №1:
Проблема не в версии XL, а в том, какие другие файлы открыты!
Время варьируется от 0,02 мс на задание до 69 мс, если открыта большая рабочая книга. Несмотря на то, что обновляемая книга пуста.
XL 365, кажется, примерно в два раза быстрее, чем XL 13, чего и следовало ожидать, поскольку компьютеры теперь примерно в два раза быстрее, чем в 2013 году.