Microsoft Word Macro для удаления всего, кроме текста
Я пытаюсь создать макрос в слове, который удаляет все, кроме текста.
Таким образом, диаграммы / таблицы / таблицы Excel / изображения.
Я пытался записать один и манипулировать им, но безрезультатно.
Это работает для изображений и диаграмм, но не для таблиц / таблиц Excel.
Sub deleteimages()
Dim i As Integer
With ActiveDocument
For i = 1 To .InlineShapes.Count
.InlineShapes(i).ConvertToShape
Next i
Dim Shp As Shape
For Each Shp In ActiveDocument.Shapes
If Shp.Type = msoTextBox Then Shp.Delete
Next Shp
For Each Shp In ActiveDocument.Shapes
If Shp.Type = msoTable Then Shp.Delete
Next Shp
ActiveDocument.Shapes.SelectAll
Selection.Delete
End With
End Sub
2 ответа
Решение
Этот макрос удаляет диаграммы, таблицы MS, таблицы и изображения, скопированные в Excel.
Sub deleteNoise()
Dim objPic As InlineShape
For Each objPic In ActiveDocument.InlineShapes
objPic.Delete
Next objPic
Dim tbl As Table
For Each tbl In ActiveDocument.Tables
tbl.Delete
Next tbl
Dim shp As Shape
ActiveDocument.Shapes.SelectAll
Selection.Delete
End Sub
Для таблиц используйте это:
Sub deletetables()
Dim i As Integer
With ActiveDocument
For i = .Tables.Count To 1 Step -1
.Tables(i).Delete
Next i
End With
End Sub
Эту же логику используют для графиков и других объектов.
Для получения дополнительной информации см.: Справочник по объектной модели Word.
Кстати, я предлагаю удалить объекты, начиная с последнего, по ряду причин. Другой способ заключается в использовании Do While... loop
:
Do While ActiveDocument.Tables.Count>1
ActiveDocument.Tables(1).Delete
Loop