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
Другие вопросы по тегам