VBA Word:我怎样才能找到哪些表格(即选择)?

时间:2014-05-23 09:49:23

标签: vba ms-word word-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文档中的所有更改,获取该更改的日期和时间以及用户。我需要知道改变的地方。跟踪更改功能可以为我提供所有详细信息,但如何确定更改的位置?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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