Почему электронная таблица Excel 2010 с VBA отстает при открытии с другими большими электронными таблицами Excel, которые уже открыты?

Почему электронная таблица Excel 2010 с VBA отстает при открытии с другими большими электронными таблицами Excel, которые уже открыты?

У меня есть сравнительно небольшая (~100 КБ) электронная таблица Excel 2010, которая (через VBA) при открытии закрывает все рабочие листы, кроме начальной страницы, проверяет имя пользователя и сверяет его с таблицей SQL, возвращая запись пользователя для проверки его прав доступа.

Обновляются несколько ячеек rangeUserName, rangeCurrentUser, rangeSystemAccess и т. д.

Если я открываю эту книгу, когда есть другие большие электронные таблицы (также содержащие VBA), то на ее открытие уходит около 30–60 секунд, а если не открыто ни одной другой книги, то на ее открытие уходит менее 5 секунд.

Почему это?

решение1

По умолчанию Excel открывает каждый файл в одном процессе EXCEL.EXE — это можно увидеть на вкладке «Процессы» диспетчера задач Windows.

Поэтому продолжение открытия файлов может вызвать конфликт внутри этого процесса — в конечном итоге он исчерпает память и замедлится или произойдет сбой.

Чтобы избежать этого, вы можете запустить последующие окна Excel как отдельный процесс EXCEL.EXE. Вы делаете это, удерживая клавишу Shift, когда выбираете Excel в меню «Пуск» или щелкаете его на панели задач. После того, как они были запущены как отдельные процессы, Windows, похоже, лучше управляет ресурсами — я считаю, что она выгружает неактивные процессы в виртуальную память.

В Excel 2013 эту игру немного усложнили — вам придется удерживать клавиши Shift + Alt, пока не появится окно подтверждения.

Я стараюсь открывать каждое окно Excel таким образом, особенно если работаю с большими файлами, кодом VBA, сводными таблицами, внешними данными или надстройками. Помимо того, что это позволяет избежать проблем с ресурсами в первую очередь, это означает, что вы теряете свою работу только в одном окне в случае сбоя или зависания, а не теряете все сразу.

Связанный контент