Есть ли способ ограничить доступ к процессору в Excel при работе? У меня есть сценарий VBA, который рассчитывает набор формул гигантского массива. Весь расчет занимает, возможно, 20 минут, используя 100% моего процессора, но я не могу использовать свою машину в течение этого времени, и предпочел бы, чтобы он работал в фоновом режиме при 50% загрузки процессора, чтобы я мог продолжать делать другие вещи. Какие-либо предложения?
Моя ОС - Windows 7 Enterprise 64-bit, а версия Excel - 2007-32 bit
windows-7
worksheet-function
microsoft-excel-2007
vba
learningAsIGo
источник
источник
Ответы:
Если функция VBA вызывается из нескольких формул или если ваш сценарий генерирует или форсирует пересчет нескольких формул, то в этом случае обязательно должна использоваться функция многопоточных вычислений Excel. Соответственно, это будет либо запускать несколько экземпляров вашей функции VBA для каждой формулы, либо пересчитывать несколько ячеек одновременно, пока ваш скрипт vba работает в одном потоке.
Вы можете ограничить количество потоков, используемых Excel для пересчета формул, в разделе «Параметры Excel ... вкладка« Дополнительно »... раздел« Формулы ».
источник
Вместо понижения приоритета, попробуйте изменить сходство в диспетчере задач. Если у вас более 1 процессора, вы можете ограничить количество процессоров, которые Excel будет использовать. Это освободит другие процессоры для работы над другими вещами.
Щелкните правой кнопкой мыши Excel на вкладке «Процессы» и выберите «Установить сходство». Выберите ЦП, где вы хотите, чтобы Excel работал.
источник
Вы можете попытаться снизить приоритет процесса Excel, открыв диспетчер задач, перейдя на вкладку «Подробности» или «Процессы» (в зависимости от версии Windows), щелкнув правой кнопкой мыши по процессу Excel.exe и выбрав более низкий приоритет Это должно дать больше процессорного времени другим процессам.
источник
Есть функции Sleep и Wait, доступные в VBA или через объявление. Однако «чрезмерно упрощенное правило большого пальца» состоит в том, чтобы никогда не использовать Sleep (). (Google "Никогда не используйте sleep ()" Программирование ")
Страница документа для Application.Wait ( https://msdn.microsoft.com/en-us/library/office/ff822851.aspx ). Обратите внимание, что режим «Сон и ожидание» приведет к тому, что Excel перестанет отвечать на запросы в течение указанного вами времени, и это может привести к «срыву поезда».
Если в ваших вычислениях используется какой-то цикл, то один из способов справиться с этим для вашей конкретной цели (лишиться времени вычисления для доступности ЦП) состоит в том, чтобы создать специальную собственную функцию ожидания, которая, например, циклически повторяет DoEvents () в течение 1 секунды и затем возвращается.
DoEvents в основном говорит вашему коду / интерпретатору отказаться от времени для ОС и т. Д. Это определенно заставит ваш код занять больше времени. Это также может позволить вам редактировать рабочий лист во время расчета, поэтому ваш пробег может варьироваться. Тест.
См., Например, /programming/469347/is-there-an-equivalent-to-thread-sleep-in-vba
источник
Несколько лет назад был задан похожий квест, в котором есть решение: существуют ли решения, которые могут ограничить использование процессором ЦП?
Process Tamer работает для Windows 7. http://www.donationcoder.com/Software/Mouser/proctamer/
источник
У меня была такая же проблема, когда у моего ноутбука было 4 ГБ памяти. Как только я получил обновление до 16 ГБ, проблема прекратилась. Просто еще одно возможное решение.
источник
Добавьте следующие 2 строки где-то в начале макроса:
И эти 2 строки в конце:
Тогда у вас будет меньше работы, пока вы будете заниматься чем-то другим.
источник
Если вы используете 32-битный офис в 64-битной ОС, вы должны использовать это приложение: http://www.ntcore.com/4gb_patch.php
Это приложение позволит Excel или любой другой офис 32bit использовать Мо
источник
Используйте OpenOffice или LibreOffice: его возможности сценариев гораздо эффективнее, чем у MS, и вы можете буквально иметь «газ» в своих вычислениях.
РЕДАКТИРОВАТЬ: Почему downvote? взгляните на руководство и убедитесь сами. Вы можете конвертировать ваши расчеты в Java и быть просто отлично со всей дроссельной силой JVM, например.
источник