Ответ 1
Чтобы удалить автошоп и текстовые поля, вы можете использовать:
Sub DeleteAllShapes()
Dim Shp As Shape
For Each Shp In ActiveSheet.Shapes
If Shp.Type = msoAutoShape Or Shp.Type = msoTextBox Then Shp.Delete
Next Shp
End Sub
В качестве альтернативы вы можете работать наоборот и указывать типы, которые нельзя удалить. Вы можете использовать перечисленные типы, но более читабельны для использования имен типов. Следующий фрагмент удалит все, кроме элементов управления Form и OLE.
Sub DeleteAllShapes()
Dim Shp As Shape
For Each Shp In ActiveSheet.Shapes
If Not (Shp.Type = msoOLEControlObject Or Shp.Type = msoFormControl) Then Shp.Delete
Next Shp
End Sub
Полный список типов форм MSO. http://msdn.microsoft.com/en-us/library/office/aa432678(v=office.12).aspx
Рон де Бруин имеет хорошую коллекцию фрагментов, которые могут иметь отношение к любому другому, кто сталкивается с этим вопросом. http://www.rondebruin.nl/controlsobjectsworksheet.htm