繁体   English   中英

MS Word 2003 VBA删除图形对象

[英]MS Word 2003 VBA Deleting a graphic object

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

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

删除所有非无菌零件上的圆圈。 此代码可从圆圈内的文本框中删除文本,但圆圈本身不会被删除。 似乎文本框本身并没有被删除,只是框内的文本被删除了。 bookmarks.Delete命令在实际对象上不起作用吗? 如果没有,我将如何删除圆圈和文本框? 谢谢

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

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

您可以使用书签的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

删除形状也将删除包含的文本。

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

子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

结束子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM