19 августа 2015 г.

EXCEL Недостаточно ресурсов. Выберите меньше данных или закройте другие приложения


Я не буду первооткрывателем ошибки, но возможно добавлю в в свою карму чужого сэкономленного времени. Я мучился с этой ошибкой полгода, точнее удаленный клиент.
Имеем:
PC: AMD A6 5400K, 4Gb DDR 1333, простенькая мать, HDD WD Blue 250Gb, Win 7 x64 Prof, Office 2010 Std x32 SP1

Для офиса ПК нормальный, установил, пользователь радовался первые полгода
И тут началось, через раз выскакивает ошибка:
Выскакивала сначала при двух определенных открытых книгах.
Подозрение пало на них, размером они не отличились (116Кб и 104Кб),  возраст, да, им лет пять-семь. Пересохранил в xlsx, почистил в OpenOffice, проблема не прошла.
При этом, эти же файлы используются другими пользователями (через DropBox), со старыми машинами и не жалуются.

Если другие файлы открывать прямо из экселя, то проблемы нет, если закрыть эти книги и открыть заново, тоже нормально. Открыл подряд 100 файлов, тоже ОК.

Пошел искать...
  1. Проверил объем потребляемой памяти, от 16 до 119МБ
  2. поднял кэш
  3. отключил антивирус
  4. отключил все красявости (Aero и т.п.)
  5. создал нового пользователя
  6. переустановил офис x32 SP2
  7. переустановил офис x64 SP2
  8. обновил драйвера на видеокарту
  9. Отключал предпросмотр файлов Excel в проводнике
И еще куча всего, сейчас и не вспомнишь.
Сегодня обратил внимание, что обе книги открываются одним процессом, раньше я не придавал этому значения, а тут подумал: "А что если?"

И кажется решение нашлось.

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

Открываем реестр Пуск > Выполнить > regedit > OK
В реестре правим ветки:
HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command
HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\command
Перед внесением изменений экспортируйте ветки:
Правой клавишей на раздел (Excel.Sheet.12) > Экспортировать. Тоже самое для Excel.Sheet.8

Для default меняем "/dde" (2010) или "/e" (2007) на конце на "%1", для параметра command меняем окончание также.
Переименовываем раздел ddeexec и перезагружаемся.
В картинках, до:
И после изменения:

Проверяем, в разных ли окнах открываются книги или нет, если нет ищем ошибки.

Т.о. на каждую книгу выделяется отдельный процесс. Здесь есть свои минусы и плюсы, из плюсов:
  1. Разные окна (многозадачность рулит)
  2. Разные процессы (вроде как решает проблему)
  3. Если книга зависнет, можно будет убить только ее, а не все ;-)
Решение находится на тестировании и не является истиной в первой инстанции.
После каждого обновления требуется вносить изменения в реестр.

Ап 14.09.2015
Тест прошел успешно на ПК менеджера, за месяц ни одной ошибки.

Ап 20.10.2015
В комментариях указали на недостаток метода, а именно, перестают работать короткие гиперссылки на ячейки в других книгах.
Короткими ссылками я назвал ссылки такого вида:
=J241+'[hot-key.xlsx]Лист1'!$F$12
Для того, чтобы ссылки снова заработали, необходимо их изменить, указав полный путь к книге, либо вручную:
=J241+'C:\Users\aa\Dropbox\[hot-key.xlsx]Лист1'!$F$12
для продвинутых:
=Excel.Sheet.12|'C:\Users\aa\Dropbox\hot-key.xlsx'!'!Лист1!R12C6'
Либо попробовать в полуавтоматическом режиме:
Имеем:

Открываем данные - изменить связи:
Как видим, поле расположение пустое, т.е. Excel знает название книги, но не ее расположение.
Нажимаем Изменить, Откроется окно выбора файла, выбираем файл, жмем Ок/Открыть. Расположение должно измениться, а состояние ОК.
Выделяем следующий источник и выполняем ту же операцию.

Все формулы на листе обновятся к шаблону показанному выше.
При последующих открытиях возможно предупреждение:
Спокойно нажимаем обновить.

Для того чтобы обновить данные в ходе работы над книгой, снова открываем изменение связей и нажимаем обновить, для каждой связи.




ВНИМАНИЕ
Это не 100% решение проблемы, это "костыль", т.е. не у всех может сработать. На большом количестве окон ошибка может повториться (более 20).
Если у кого есть другие варианты, добро пожаловать в комментарии.

Комментариев нет:

Отправка комментария