MS Word 2003 VBA删除图形对象

时间:2010-12-04 21:50:56

标签: vba ms-word word-vba

我有一个宏,可以为不同产品的列表生成案例标签。一些产品是无菌的并且需要在标签上绘制圆形图作为辐射指示剂点的位置。圆圈内还有一个文本框,用于将圆圈标记为圆点的位置。我尝试通过插入圆形的自动形状并将其作为书签然后使用代码来实现此目的:

ThisDocument.Bookmarks("GammaDot").Range.Delete 

删除所有非无菌部位的圆圈。此代码用于从圆圈内的文本框中删除文本,但圆圈本身不会被删除。 似乎文本框本身也没有被删除,只是框内的文本。 bookmarks.Delete命令不适用于实际的obects吗?如果没有,我将如何删除圆圈和文本框? 谢谢

3 个答案:

答案 0 :(得分:0)

我怀疑您必须按名称或循环删除形状。书签父级返回文档,而不是文本框。这将删除文本框和圆圈:

For i = ThisDocument.Shapes.Count To 1 Step -1
    ''Debug.Print ThisDocument.Shapes(1).Name
    ThisDocument.Shapes(i).Delete
Next

答案 1 :(得分:0)

您可以使用书签的Range的ShapeRange属性来获取属于书签的形状,并使用TextFrame获取形状的文本:

Dim bkmk As Bookmark
Set bkmk = ActiveDocument.Bookmarks("circle")
Dim shp As Shape
Set shp = bkmk.Range.ShapeRange.Item(1)
Debug.Print shp.TextFrame.TextRange.Text
shp.Delete

删除形状也会删除包含的文字。

答案 2 :(得分:0)

您可以通过在vba编辑器中运行以下代码来删除除文本及其格式之外的所有内容:

Sub DeleteAllExceptText()

Dim i As Integer

With ActiveDocument
    For i = .Tables.Count To 1 Step -1
        .Tables(i).Delete
    Next i
End With

Dim j As Integer

With ActiveDocument
    For j = .Shapes.Count To 1 Step -1
        .Shapes(j).Delete
    Next j

Dim k As Integer

With ActiveDocument
    For k = .InlineShapes.Count To 1 Step -1
        .InlineShapes(k).Delete
    Next k

End Sub