Долго открывается и запускается Word
Опубликовано: 02.04.2017
Обратился к нам клиент с вопросом: тормозит Excel, при этом конкретно на одном определенном листе. Все другие листы в той же книжке работают нормально. Анализ (и Гугл) отдал — правда к тому времени мы уже додумались грохнуть большой файл drawings снутри архива xlsx, но макрос более ценен! Сущность трудности в неограниченном количестве пустых объектов типа Shape. Необходимо их удалить и будет всем счастье!
Sub DeleteAllTextBox()
Dim oSh As Shape
For Each oSh In ActiveSheet.Shapes
oSh.Delete
Next oSh
End Sub
Мой знакомый прислал мне Excel-файл содержащий порядка 200 строк без формул и связей, и весящий около 28МВ! Для перехода курсора из ячейки в ячейку требовалось несколько секунд. 1-ое, что я сделал, это удалил всё форматирование, очистил все пустые ячейки. Не очень посодействовало. Удалил все данные. Ситуация чуток стала лучше, но верно было видно, что файл «тормозит». Задал вопрос в Гугл – о волшебство! – отыскал ответ.
Как уменьшить размер файла и ускорить его в Excel
Наверняка это побочный эффект копирования. Похожая вещь появляется при вставке данных целыми листами либо столбцами/строчками из файлов, сделанных 1С и схожих (ERP) систем: они генерируют в файл «пустые» ячейки (забитые пробелами) и объекты типа Надпись. В конечном итоге с течением времени файл становится очень огромным.
В Excel2003: меню Правка → Перейти → Выделить → Объекты.
В Excel2007: вкладка Основная → Отыскать и выделить → Выделение группы ячеек → Объекты.
Весь процесс сопровождался долгими лагами, но в конечном итоге выделилась какая-то непонятная ерунда, которую я удалил, после чего торможение пропало.
Как Установить Word
К огорчению, в моем файле оказалось практически 14 000! . Чтоб узреть все объекты, пройдите по меню: вкладка Основная → Отыскать и выделить → Область выделения:
Часть объектов можно узреть справа на дисплее; один объект под номером 13 697 выделен в перечне и на дисплее:
При попытке выделить все объекты Excel зависал (через 30 минут надоело, снял задачку).
2-ое воззвание к Гугл «навело» на макрос.:
Sub DeleteAllTextBox()
Dim oSh As Shape
For Each oSh In ActiveSheet.Shapes
oSh.Delete
Next oSh
End Sub
Другими словами, не выделять все объекты сходу, а запустить макрос, который будет отыскивать объекты по одному и удалять. В файле макрос совладал с ликвидированием 14 000 объектов за 5 минут!