Проблема с TextBox в MS Excel

Проблема с TextBox в MS Excel

В этой статье мы рассмотрим любопытный случай, связанный с документом Microsoft Excel. Мне попался файл, размер которого не соответствовал его содержимому, а открытие занимало необычно много времени. Давайте разберёмся, почему так произошло и как это можно исправить.

Мне попался странный файл Excel — он почти пустой, но его размер достигает 1,5 МБ, а открывается он крайне медленно, почти минуту.

Работа ведётся на офисном компьютере с процессором i3-10105 и 16 ГБ оперативной памяти в Microsoft Excel 2010.

При этом в файле не оказалось ни лишних стилей, ни скрытых страниц, ни пустых диапазонов.

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

Стало очевидно, что причина кроется в скрытых объектах. Давайте разберёмся, что скрывается под маской пустого файла! 🙂

Выбираем меню «Вставка» — «Фигуры» и выбираем любую фигуру, например Прямоугольник.

Затем произвольно растягиваем прямоугольник на странице. После этого откроется скрытый ранее раздел — «Средство рисования – Формат». В нём переходим в раздел «Упорядочить» и нажимаем «Область выделения».

Мы видим что помимо нашего видимого Прямоугольника, есть ещё 32359 скрытых текстовых поля. Именно эти сокрытые объекты и вызывают такой эффект медленной работы файла.


Теперь давайте разберём, как мы можем удалить эти объекты.

ВАРИАНТ 1

Попробуем выделить все объекты одновременно и удалить их.

Нажмите F5, чтобы открыть окно «Переход». В нижней части окна нажмите кнопку «Выделить», после чего появится окно «Выделение группы ячеек». Выберите пункт «объекты» и нажимаем «ОК».

Уже при выборе объектов, Excel повис с потреблением 725,3 Mb оперативной памяти.

Через какое-то время программа отвиснет и выделит все объекты. Нажимаем Del на клавиатуре и через некоторое время Все объекты удаляться.

ВАРИАНТ 2

Мы можем удалить всё при помощи Макроса VB.

Для этого зайдем в панель разработчик. Если у вас нет панели разработчик, то включите её в настройках. (Файл — Настройки — Настройки ленты — Разработчик).

В Панели Разработчик выберете Visual Basic — Правой кнопкой по Microsoft Exsel Object — Insert — Module.

В появившийся модуль вставляем код и нажимаем выполнить макрос (Зелёный треугольник на панели).

Sub DeleteAllTextBoxes()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.TextBoxes.Delete
    Next ws
End Sub

Через довольно продолжительное время, Все TextBox удалились.

Теперь модуль можно удалить, а окно Visual Basic закрыть.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Back To Top