如何用vba遍历word文档的图形对象?

在word中的图形对象有InlineShape对象和Shape对象,其中InlineShape对象表示的是嵌入到文本层的图片,就像是文字的一部分一样,而Shape对象是悬浮于文本之上位于图形层,两者有区别。

如果需要将所有除了文字以外的对象都清除,需要同时遍历InlineShape对象和Shape对象。

基于以上的认识,可以使用如下的代码删除word文档中的所有图形对象:

Sub QQ1722187970()
    Dim oDoc As Document
    Set oDoc = Word.ActiveDocument
    Dim oSP As Shape
    Dim oInLineSp As InlineShape
    With oDoc
       For Each oSP In .Shapes
            oSP.Delete
       Next
        For Each oInLineSp In .InlineShapes
          oInLineSp.Delete
       Next
    End With
End Sub

以上代码只能删除word文档的正文中的所有图形对象,如果要删除页眉、页脚中的所有图形对象,还可以使用如下的代码:

Sub QQ1722187970()
    Dim oDoc As Document
    Set oDoc = Word.ActiveDocument
    Dim oSec As Section
    Dim oShape As Shape
    Dim oInLineShape As InlineShape
    With oDoc
        '先遍历所有的节对象
        For Each oSec In .Sections
            With oSec
                With .Headers(wdHeaderFooterPrimary)
                    For Each oShape In .Shapes
                        oShape.Delete
                    Next
                    For Each oInLineShape In .Range.InlineShapes
                        oInLineShape.Delete
                    Next
                End With
                With .Footers(wdHeaderFooterPrimary)
                    For Each oShape In .Shapes
                        oShape.Delete
                    Next
                    For Each oInLineShape In .Range.InlineShapes
                        oInLineShape.Delete
                    Next
                End With
            End With
        Next
    End With
End Sub
       

发表评论