Word VBA 删除带书签的表格
Word VBA to Delete Tables with Bookmarks
我有一个包含多个表格的 Word 文档。其中一些有书签,而另一些则没有。有没有一种方法可以使用 VBA 仅在带有书签的表格上实施 ConvertToText 命令(无论书签名称......我有超过 40 个书签)?
基本上,我试图摆脱带有书签的表格并只保留其中的文本。带书签的表格插入到其他没有书签的表格中。
我正在使用 MS Word 2007。
提前致谢!
塞布
是的,有一个非常简单的解决方案。
您需要遍历所有书签并检查是否有 wdWithInTable
。如果是这样,将整个 table 转换为文本。这是给你的代码:
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
在下面的评论中进行额外解释后,有一些提示可以帮助您解决问题。
要查找 table 您的书签是:
Activedocument.bookmarks(1).Range.Tables(1)
要在上面 table 中找到第一个 table,请使用此代码
Activedocument.bookmarks(1).Range.Tables(1).Tables(1)
但我认为你可以有一些 table 在你的内心 parent table。因此我建议 运行 像这样的循环(伪代码,需要根据您的需要进行一些调整):
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
我没有机会对其进行测试,但希望它会起作用。
我有一个包含多个表格的 Word 文档。其中一些有书签,而另一些则没有。有没有一种方法可以使用 VBA 仅在带有书签的表格上实施 ConvertToText 命令(无论书签名称......我有超过 40 个书签)? 基本上,我试图摆脱带有书签的表格并只保留其中的文本。带书签的表格插入到其他没有书签的表格中。 我正在使用 MS Word 2007。
提前致谢! 塞布
是的,有一个非常简单的解决方案。
您需要遍历所有书签并检查是否有 wdWithInTable
。如果是这样,将整个 table 转换为文本。这是给你的代码:
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
在下面的评论中进行额外解释后,有一些提示可以帮助您解决问题。
要查找 table 您的书签是:
Activedocument.bookmarks(1).Range.Tables(1)
要在上面 table 中找到第一个 table,请使用此代码
Activedocument.bookmarks(1).Range.Tables(1).Tables(1)
但我认为你可以有一些 table 在你的内心 parent table。因此我建议 运行 像这样的循环(伪代码,需要根据您的需要进行一些调整):
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
我没有机会对其进行测试,但希望它会起作用。