通过编辑器(Microsoft Word)查找更改
订阅者Doris Bell问在Word 2000中是否有一种方法可以在打开“修订”的文档中找到特定编辑器所做的所有更改。当然,快速的答案是升级到Word 2002,因为可以从“审阅”工具栏立即使用此功能。
但是,Word 97和Word 2000是一个不同的故事,您只能查看或不查看所有跟踪的更改。如果需要,可以通过创建允许您通过特定编辑器搜索更改的宏来解决缺陷。首先按照以下常规步骤在VBA编辑器中创建用户表单:
。通过按Alt + F11来显示VBA编辑器。
。从插入菜单中选择用户窗体。在编辑器中将显示一个空白的用户表单。
。使用工具箱,将Label控件放置在窗体中靠近窗体左侧的位置。
。在新放置的Label控件的“属性”中,将“标题”属性更改为“作者”(不带引号)。
。使用工具箱,将ComboBox控件放置在您在步骤3中放置的标签的右边。 。在ComboBox控件的“属性”中,将“名称”属性更改为“ cboAuthor”(不带引号)。
。使用工具箱,在窗体上放置一个CommandButton控件。可以沿着表单的底部边缘,也可以沿着右侧边缘。它是由你决定。
。在“命令按钮”控件的“属性”中,将“名称”属性更改为“ cmdFindNext”(不带引号)。
。在命令按钮控件的属性,将标题属性更改为“查找”(不带引号)。
。使用工具箱,在窗体上放置另一个CommandButton控件。
它应该在另一个CommandButton控件的右边,或者在它的下面。
。在“命令按钮”控件的“属性”中,将“名称”属性更改为“ cmdExit”(不带引号)。
。在命令按钮控件的属性,将标题属性更改为“退出”(不带引号)。
。调整您的整体形状以达到所需的外观。
现在,您的表单已经完成,您所需要做的就是添加将利用这些控件的编程代码。确保选择整个表单,然后按F7键显示“代码”窗口。如果已经有任何代码(VBA可能会为您提供一些默认代码),请随时将其删除。然后,将以下代码放在“代码”窗口中:
Private Sub UserForm1_Initialize() Dim oRevision As Revision Dim bExists As Boolean bExists = False ' Go to beginning of document Selection.HomeKey Unit:=wdStory ' Loop through revisions and add authors For Each oRevision In ActiveDocument.Revisions If Me.cboAuthor.ListCount > 0 Then For i = 1 To Me.cboAuthor.ListCount If Me.cboAuthor.List(i - 1) = oRevision.Author Then bExists = True End If Next i ' If it doesn't already exist, add the author to list If Not bExists Then Me.cboAuthor.AddItem oRevision.Author End If bExists = False Else ' Add first Author to the list Me.cboAuthor.AddItem oRevision.Author End If Next oRevision End Sub Private Sub cmdExit_Click() Unload Me End Sub Private Sub cmdFindNext_Click() Dim iStart As Integer Dim iEnd As Integer Dim myRange As Range Dim iRevisions As Integer Dim iResponse As Integer Dim bAuthorFound As Boolean ' Collapse the Selection so that we don't include selected text Selection.Collapse wdCollapseEnd Selection.MoveRight wdCharacter, 2 ' Get the Range start and end positions iStart = Selection.Range.Start iEnd = ActiveDocument.Content.End Set myRange = ActiveDocument.Range(Start:=iStart, End:=iEnd) ' Count total number of revisions within range iRevisions = myRange.Revisions.Count If iRevisions > 0 Then ' Loop through all revisions in the range ' selecting first one found For i = 1 To iRevisions If myRange.Revisions(i).Author = Me.cboAuthor.Text Then myRange.Revisions(i).Range.Select bAuthorFound = True Exit For Else bAuthorFound = False End If Next i End If If Not bAuthorFound Then ' Ask if they would like to start from the beginning iResponse = MsgBox("Search from beginning?", vbYesNo, "Find Author") If iResponse = vbYes Then ' Go to top of document Selection.HomeKey Unit:=wdStory cmdFindNext_Click Else ' Exit Unload Me End If End If End Sub
以后运行新用户表单时,将为您提供选择编辑器并查找该编辑器进行的下一个编辑的方法。这样一来,您一次只能找到一个编辑,而不必查看特定编辑器的所有编辑(就像在Word 2002中一样)。
您可以采取另一种方法。您可以使用宏来“拉”文档中完成的所有编辑,然后由编辑者将其排列在新文档中。下面的宏显示了如何执行此操作。结果表甚至指示原始文档中完成的编辑类型。
Option Explicit Private Sub ShowAuthorAndRevisions() Dim sRevision As String Dim oRev As Revision Dim oDoc As Document Dim oRng As Range For Each oRev In ActiveDocument.Revisions With oRev sRevision = sRevision & .Author & vbTab _ & .Type & vbTab & .Range.Text & vbCrLf End With Next oRev ' Open a new document Set oDoc = Documents.Add With oDoc .Range.InsertAfter sRevision ' Convert the revisions to a table .Range.ConvertToTable Separator:=wdSeparateByTabs With .Tables(1) ' Sort the table by the author (i.e., the first column) .Range.Sort ' Add a new row to the beginning of the table .Range.Rows.Add BeforeRow:=.Range.Rows(1) With .Rows(1) ' insert column descriptions .Cells(1).Range.Text = "Author" .Cells(2).Range.Text = "Revision Type" .Cells(3).Range.Text = "Revision" End With End With ' insert a paragraph mark above the table Selection.SplitTable ' Insert a legend to make reading the revision type easier .Range.InsertBefore "Revision Type Legend:" & vbCrLf & _ "No Revision = 0 " & vbCrLf & _ "Revision Insert = 1 " & vbCrLf & _ "Revision Delete = 2 " & vbCrLf & _ "Revision Property = 3 " & vbCrLf & _ "Revision Paragraph Number = 4 " & vbCrLf & _ "Revision Display Field = 5 " & vbCrLf & _ "Revision Reconcile = 6 " & vbCrLf & _ "Revision Conflict = 7 " & vbCrLf & _ "Revision Style = 8 " & vbCrLf & _ "Revision Replace = 9 " & vbCrLf End With End Sub
对于文档中的每个修订,此宏将查找修订的作者,类型和文本(如果有)。然后,宏会将所有修订放置在表格中,按作者姓名对表格进行排序,并插入描述每个修订类型的小图例。
注意:
如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。
链接:/ wordribbon-WordTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。
_WordTips_是您进行经济有效的Microsoft Word培训的来源。
(Microsoft Word是世界上最流行的文字处理软件。)本技巧(1303)适用于Microsoft Word 97、2000和2002。