2014-05-23 89 views
0

我在我的文檔中有許多表格,每個表格都鏈接到書籤。 然後我有每個跟蹤更改(修訂)掃描文檔的功能。 我怎樣才能找出我的跟蹤變化在哪裏?在哪張桌子?VBA Word:我怎樣才能找到哪些表(即選擇)是哪個表?

下面是我的一些代碼:

Dim ThisWord As Document, TabHead As Table 
Set ThisWord = ActiveDocument 
Set TabHead = ThisWord.Bookmarks("Head").Range.Tables(1) '"Head" is bookmark for my first table 

For Each oRevision In ThisWord.Revisions 'Run through each revision - tracked change 
    Select Case oRevision.Type 
    Case wdRevisionInsert 
     strText = oRevision.Range.Text 
     If oRevision.Range.Information(wdWithInTable) = True Then 'Check if tracked change is within table 
      Select Case oRevision.Range.Table ' <-- How can I change this part??? 
        Case TabHead 
         'do some stuff with strText 
        'Case AnotherTable1 
        'Case AnotherTable2 
        '... 
      end select 
     end if 
    end select 
next oRevision 

我的主要目標是跟蹤了word文檔中的所有變化,讓這種變化的日期和時間以及用戶。我需要知道更改是在哪裏進行的。跟蹤變更功能可以給我所有的細節,但如何確定變更的地方?

回答

0

通過Range對象,您可以訪問修訂中的所有不同對象。如果你想引用第一Table對象,然後使用:

oRevision.Range.Tables(1) 

你顯然需要進行檢查,看有使用的參考(例如If oRevision.Range.Tables.Count > 0 Then ...)之前表。

您也可以訪問相同的方式書籤收藏:

If oRevision.Range.Bookmarks.Count > 0 Then 
    Debug.Print oRevision.Range.Bookmarks(1).Name 
End If 
0

這給了你選擇的表號。

Sub Demo() 
    Dim iTable& 
    With Selection 
    If Not .Information(wdWithInTable) Then 
     MsgBox "The selection is not in a table!" 
     Exit Sub 
    End If 
    For iTable = 1 To ActiveDocument.Tables.Count 
     If (.Range.Start >= ActiveDocument.Tables(iTable).Range.Start) And _ 
     (.Range.End <= ActiveDocument.Tables(iTable).Range.End) Then 
      Exit For 
     End If 
    Next iTable 
    End With 
    MsgBox "It's in table # " & iTable 
End Sub 

從macropod https://groups.google.com/forum/#!searchin/microsoft.public.word.programming/%22table%22 $ 20which/microsoft.public.word.programming/Gid7abgeAek/c5rUWhFmWwgJ

+0

感謝,但我不認爲需要:) – Milan

相關問題