Вы просматриваете: Главная > Без рубрики > Excel тормозит. Что делать?

Excel тормозит. Что делать?

Рубрика: 7. Полезняшки Excel

Мой знакомый прислал мне Excel-файл содержащий порядка 200 строк без формул и связей, и весящий около 28МВ! Для перехода курсора из ячейки в ячейку требовалось несколько секунд. Первое, что я сделал, это удалил всё форматирование, очистил все пустые ячейки. Не сильно помогло. Удалил все данные. Ситуация чуть улучшилась, но четко было видно, что файл Excel тормозит. Задал вопрос в Google – о чудо! – нашел ответ.

GPlay пишет:
Наверное это побочный эффект копирования. Похожая вещь возникает при вставке данных целыми листами или столбцами/строками из файлов, созданных 1С и подобных (ERP) систем: они генерируют в файл «пустые» ячейки (забитые пробелами) и объекты типа Надпись. В итоге со временем файл становится очень большим.
В Excel2003: меню Правка → Перейти → Выделить → Объекты.
В Excel2007: вкладка Главная → Найти и выделить → Выделение группы ячеек → Объекты.
Весь процесс сопровождался долгими лагами, но в итоге выделилась какая-то непонятная ерунда, которую я удалил, после чего торможение пропало.

Скачать статью в формате Word Тормоз

К сожалению, в моем файле оказалось почти 14 000! :(. Чтобы увидеть все объекты, пройдите по меню: вкладка Главная → Найти и выделить → Область выделения:

Часть объектов можно увидеть справа на экране; один объект под номером 13 697 выделен в списке и на экране:

При попытке выделить все объекты Excel зависал (через 30 минут мне надоело, и я снял задачу).

Второе обращение к Google «навело» меня на макрос, предложенный The_Prist. Я его немного модернизировал, и получил:

Sub DeleteAllTextBox()

Dim oSh As Shape

For Each oSh In ActiveSheet.Shapes

oSh.Delete

Next oSh

End Sub

То есть, я решил не выделять все объекты сразу, а запустить макрос, который будет находить объекты по одному и удалять. В моем файле макрос справился с уничтожением 14 000 объектов за 5 минут!

Прилагаю файл Excel2007, содержащий эти злосчастные 14 000 объектовПример тормоза

P.S. (написано 12 октября 2012 г.) Надо заметить, что пост пользуется популярностью — около 500 просмотров в месяц. С одной стороны это приятно мне. С другой стороны, это минус Microsoft, который не может справится с такой простой проблемой… Посетители благодарят меня за раскрытие темы (более 10 комментариев), а 10 октября 2012 г. Антон предложил оригинальное решение, основанное на архивной природе современного формата Excel-файлов. О чем я решил более подробно написать отдельно — см. Excel  «тормозит». Что делать? Дубль 2

Excel «тормозит». Что делать? Дубль 2

Около двух лет тому назад мой знакомый прислал мне Excel-файл содержащий порядка 200 строк без формул и связей, и весящий около 28МВ! Для перехода курсора из ячейки в ячейку требовалось несколько секунд. Оказалось, что файл содержал объекты, и мне удалось их удалить с помощью небольшого кода VBA.

У этой истории совсем недавно появилось продолжение. Посетитель блога оставил комментарий к той заметке, указав на иное оригинальное решение. Оно мне так понравилось, что я решил вернуться к этой теме.

Кто не знает, стандартный Excel-файл, начиная с версии 2007, является zip-архивом. Я про это узнал из комментария. Любопытно, что мои знакомые сисадмины этого тоже не знали :) Вот что по этому поводу значится вВикипедии:

Скачать заметку в формате Word, Пример тормоза 1 в формате Excel

Для удаления «паразитного» содержимого Excel-файла предлагается открыть файл как архив. На одном из моих компьютеров установлен архиватор 7-Zip. Запускаем программу, в меню Файл выбираем «Открыть внутри»:

Среди файлов и папочек ищем папку drawings, и тупо ее удаляем:

После этого открываем файл в Excel`е. Программа пару раз ругнется:

Жмем оба раза Ok, файл открывается, и с ним можно спокойно работать…

На другом компьютере у меня установлен архиватор WinRar. Запускаем его, выбираем файл Excel, команда Просмотр, удаляем папку drawings:

Метки:


Оставить отзыв