Удаление множества textbox из книги Excel

На работе один из сотрудников выполняет дефектовку, и присылает девочкам в сметно-договорном отделе файл Excel с это дефектовкой. Зовут меня девочки как-то раз и показывают этот файл… Таблица на 1 лист формата А4, а весит — 50 мегабайт!!!

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

Открыв файл я немного подофигел. Внутри в одном из столбцов практически в каждой ячейке помимо самого текста были вставлены и элементы формы — textbox.

И ничего бы страшного, но выделив один из этих элементов я увидел что его порядковый номер 3762… Теперь стало понятно откуда растут уши у размера файла. В этом файле были тысячи textbox. Вручную удалять весь этот срач — мартышкин труд. Поэтому я немного потеребил VBA и сообразил макрос.

Sub DeleteAllTextboxies()

  Dim i As Long

  With ActiveSheet.Shapes
    For i = .Count To 1 Step -1

      If .Item(i).Type = msoTextBox Then 
        .Item(i).Delete
      End If

    Next i
  End With

End Sub

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

ЗЫ — скрипты в MSO — зло. Так же как и формы. Ужасно-костыльное решение с приветом из 90-х.
Поделиться ссылкой: