繁体   English   中英

Word VBA删除带书签的表

[英]Word VBA to Delete Tables with Bookmarks

我有一个带有多个表的Word文档。 其中一些带有书签,而另一些则没有。 有没有一种方法可以仅使用VBA在带有书签的表上实现ConvertToText命令(与书签名称无关。...我有40多个书签)? 基本上,我试图摆脱加书签的表,只保留其中的文本。 带书签的表将插入到没有书签的其他表中。 我正在使用MS Word 2007。

提前致谢! 塞布

是的,有一个非常简单的解决方案。 您需要遍历所有书签,并检查其中一个是否为wdWithInTable 如果是这样,将整个表转换为文本。 这是给您的代码:

Sub ConvertTablesWithBookmarks()


    Dim BK As Bookmark
    For Each BK In ActiveDocument.Bookmarks
        If BK.Range.Information(wdWithInTable) Then
            'uncomment for test just to check if working as expected
            'BK.Range.Tables(1).Select

            BK.Range.Tables(1).ConvertToText
        End If
    Next

End Sub

在下面的注释中进行了其他解释之后,有一些提示可以帮助您解决问题。

要查找您的书签所在的表:

Activedocument.bookmarks(1).Range.Tables(1)

要在上表中找到第一个表,请使用此代码

Activedocument.bookmarks(1).Range.Tables(1).Tables(1)

但我认为您的父表中可以有一些表。 因此,我建议运行这样的循环(伪代码,需要对您的需求进行一些调整):

dim parentTable as Table
dim BK as Bookmark     'or a reference to one from loop above
set BK = Activedocument.bookmarks(1)
set parentTable = BK.Range.Tables(1)
dim i as integer
for i=1 to parentTable.Tables.Count
    if parenttable.tables(i).range.start >=bk.range.start and _
       parenttable.tables(i).range.end <=bk.range.end Then
       'here we know that tables(i) is inside bookmark 1 (BK)

       parenttable.tables(i).converttotext
     end if
next i

我没有机会进行测试,但希望它能工作。

暂无
暂无

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

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