Известно, что VBA работает только с одним процессором одновременно, поэтому, когда я запускаю макрос, Excel использует только 50% процессора вместо полностью двухъядерного.
Есть ли обходной путь, чтобы заставить VBA использовать оба процессора?
Спасибо.
Вы можете разделить проблему на несколько экземпляров Excel.Applications, таким образом вы могли бы сделать половину в одной копии Excel и половину в другой.
Я видел, как кто-то симулировал работу в Excel VBA с использованием 8 ядер. Немного боль, чтобы вернуть результаты в конце, но это сработало.
Ответ не будет, если вы не разделите рабочую нагрузку на несколько экземпляров Excel и не перекомпилируете результаты в конце.
Но подавляющее большинство случаев медленного выполнения VBA можно ускорить на порядок: < ш >
- отключить обновление экрана
- установить расчет вручную
- читать и записывать данные excel с использованием больших диапазонов и вариантов массивов, а не по ячейкам
- внимательно посмотрите на кодирование в VBA UDF и обходите ошибку обновления VBE
- минимизировать количество вызовов модели объекта Excel
В Excel 2010
Перейдите в меню Файл → Параметры → Дополнительно.
Прокрутите вниз до тех пор, пока вы не увидите раздел Формулы, и вы можете установить количество процессоров, которые будут использоваться при вычислении формул.
Это может не повлиять на VBA, но оно будет работать для запуска формулы по всей колонке. Его большая экономия времени при работе с большими книгами. Кроме того, вы можете перейти к диспетчеру задач и щелкнуть правой кнопкой мыши по excel и установить приоритет на высокий, чтобы ваша машина фокусировала свою энергию там.
** Эта опция недоступна для Mac **