3

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

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

Если я открою эту книгу при наличии других больших электронных таблиц (которые также имеют vba), открытие займет около 30-60 секунд, а если другие рабочие книги не открыты, это займет менее 5 секунд.

Почему это?

1 ответ1

1

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .