簡體   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