Tìm các thay đổi bằng trình soạn thảo (Microsoft Word)
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:
-
Hiển thị VBA Editor bằng cách nhấn Alt + F11.
-
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.
-
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.
-
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).
-
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.
-
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).
-
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.
-
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).
-
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).
-
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ó.
-
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).
-
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).
-
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.