Người đăng ký Doris Bell đã hỏi liệu có cách nào, trong Word 2000, để định vị tất cả các thay đổi được thực hiện bởi một trình soạn thảo cụ thể trong một tài liệu đã bật Theo dõi Thay đổi hay không. Tất nhiên, câu trả lời nhanh sẽ là nâng cấp lên Word 2002, vì khả năng này có sẵn ngay từ thanh công cụ Xem lại.

Tuy nhiên, Word 97 và Word 2000 là một câu chuyện khác – ở đó bạn chỉ có khả năng xem hoặc không xem tất cả các thay đổi được theo dõi. Nếu muốn, bạn có thể giải quyết sự thiếu hụt bằng cách tạo các macro cho phép bạn tìm kiếm các thay đổi bởi một trình chỉnh sửa cụ thể. Bắt đầu bằng cách tạo biểu mẫu người dùng trong VBA Editor, bằng cách làm theo các bước chung sau:

  1. Hiển thị VBA Editor bằng cách nhấn Alt + F11.

  2. Chọn UserForm từ menu Chèn. Một biểu mẫu người dùng trống được hiển thị trong trình chỉnh sửa.

  3. Sử dụng Hộp công cụ, đặt điều khiển Nhãn trong biểu mẫu, gần bên trái của biểu mẫu.

  4. Trong Thuộc tính cho điều khiển Nhãn mới được đặt, hãy thay đổi thuộc tính Phụ đề thành “Tác giả” (không có dấu ngoặc kép).

  5. Sử dụng Hộp công cụ, đặt điều khiển ComboBox ngay bên phải nhãn bạn đã đặt ở bước 3.

  6. Trong Thuộc tính cho điều khiển ComboBox, hãy thay đổi thuộc tính Tên thành “cboAuthor” (không có dấu ngoặc kép).

  7. Sử dụng Hộp công cụ, đặt điều khiển CommandButton trên biểu mẫu. Điều này có thể nằm dọc theo cạnh dưới cùng của biểu mẫu hoặc ở cạnh bên phải; điều đó phụ thuộc vào bạn.

  8. Trong Thuộc tính cho điều khiển CommandButton, thay đổi thuộc tính Tên thành “cmdFindNext” (không có dấu ngoặc kép).

  9. Trong Thuộc tính cho điều khiển CommandButton, hãy thay đổi thuộc tính Phụ đề thành “Tìm” (không có dấu ngoặc kép).

  10. Sử dụng Hộp công cụ, đặt một điều khiển CommandButton khác trên biểu mẫu.

Điều này phải nằm ngay bên phải của điều khiển CommandButton khác hoặc ngay bên dưới nó.

  1. Trong Thuộc tính cho điều khiển CommandButton, hãy thay đổi thuộc tính Tên thành “cmdExit” (không có dấu ngoặc kép).

  2. Trong Thuộc tính cho điều khiển CommandButton, thay đổi thuộc tính Phụ đề thành “Thoát” (không có dấu ngoặc kép).

  3. Thay đổi kích thước biểu mẫu tổng thể của bạn để có diện mạo mong muốn.

Biểu mẫu của bạn hiện đã hoàn tất và tất cả những gì bạn cần làm là thêm mã lập trình để tận dụng các điều khiển này. Đảm bảo rằng bạn chọn toàn bộ biểu mẫu, sau đó nhấn F7 để hiển thị cửa sổ Mã. Nếu đã có bất kỳ mã nào (VBA có thể cung cấp một số mã mặc định cho bạn), hãy xóa nó đi. Sau đó, đặt mã sau vào cửa sổ Mã:

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

Sau này, khi bạn chạy biểu mẫu người dùng mới của mình, bạn sẽ thấy một cách để chọn người chỉnh sửa và tìm bản chỉnh sửa tiếp theo do người chỉnh sửa đó thực hiện. Điều này cho phép bạn tìm từng chỉnh sửa tại một thời điểm, không phải xem tất cả các chỉnh sửa của một trình soạn thảo cụ thể (như bạn có thể làm trong Word 2002).

Có một cách tiếp cận khác mà bạn có thể thực hiện. Bạn có thể sử dụng macro để “kéo” tất cả các chỉnh sửa được thực hiện trong một tài liệu và sắp xếp chúng theo trình soạn thảo trong một tài liệu mới. Macro sau đây cho biết cách bạn có thể làm điều này. Bảng kết quả thậm chí còn chỉ ra loại chỉnh sửa được thực hiện trong tài liệu gốc.

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

Đối với mỗi bản sửa đổi trong tài liệu, macro này sẽ tìm tác giả, loại và văn bản của bản sửa đổi (nếu có). Sau đó, macro sẽ đặt tất cả các bản sửa đổi vào một bảng, sắp xếp bảng theo tên của tác giả và chèn một chú giải nhỏ mô tả từng loại sửa đổi.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên các trang WordTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

WordTips là nguồn của bạn để đào tạo Microsoft Word hiệu quả về chi phí.

(Microsoft Word là phần mềm xử lý văn bản phổ biến nhất trên thế giới.) Mẹo này (1303) áp dụng cho Microsoft Word 97, 2000 và 2002.