Làm cách nào để Word không sửa đổi đánh dấu một bản cập nhật trường mà kết quả không thay đổi?


2

Mặc dù vậy, tôi đang sử dụng Word 2010

Khi tôi tạo một trường trong tài liệu, trường được cập nhật khi tôi buộc nó (ví dụ: với F9 hoặc lựa chọn menu chuột phải) hoặc dưới dạng tác dụng phụ của việc mở hoặc in tệp. Tất cả đều tốt - đó là lý do tại sao tôi sử dụng một lĩnh vực. Tất nhiên, phần lớn thời gian (đôi khi hầu hết thời gian), trường cập nhật dẫn đến kết quả không thay đổi văn bản kết quả. Ví dụ: {numpages} hoặc tham chiếu chéo hoặc tên tệp có thể không thay đổi.

Thật không may, nếu tôi bật tính năng theo dõi sửa đổi, mọi cập nhật trường được đánh dấu bằng kết quả cũ bị xóa (xóa) và giá trị mới được chèn. Điều này xảy ra ngay cả khi giá trị không thay đổi. Sau một vài tập mở, đóng, in, cập nhật, v.v., bạn có thể kết thúc bằng một cái gì đó trông như thế này (tôi đã sử dụng in đậm thay vì gạch chân trong ví dụ này do giới hạn của trình chỉnh sửa) để tham khảo chéo

xem phần 2.3.4 2.3.42.3.42.3.4

IMHO, Word không nên coi đó là bản sửa đổi nếu văn bản kết quả không thay đổi. Nếu có một cách để khiến Word làm điều đó ngay từ đầu, tôi muốn biết về nó.

Thay vào đó, nếu có một cách nào đó để dễ dàng loại bỏ các bản sửa đổi (không) không cần thiết này khỏi tài liệu của tôi (trong khi lưu giữ tất cả các bản sửa đổi "thực"), đó sẽ là một giải pháp khác cho vấn đề của tôi.

Cảm ơn,
Hắc

Câu trả lời:


1

Không phải là một giải pháp hoàn chỉnh, nhưng bạn có thể tránh các bản sửa đổi trùng lặp bằng cách tắt các bản sửa đổi được theo dõi ngay trước khi cập nhật và sau đó bật lại chúng sau khi cập nhật hoàn tất. Bạn có thể đi xa hơn để liên kết một macro với bàn phím tắt để thực hiện các bước này cho bạn một cách tự động.

Tôi e rằng điều này sẽ không giúp ích nhiều nếu các trường được cập nhật tự động trước khi in tuy nhiên bạn có thể chọn tắt hành vi đó bằng cách vào menu tùy chọn, vào Trưng bày và bỏ chọn Cập nhật các trường trước khi in .

EDIT: Tôi đã viết macro sau đây để loại bỏ các sửa đổi không cần thiết như vậy khỏi các trường. Nó có thể cần một số cải tiến tốc độ nếu có thể.

Sub RemoveUnchangedFieldTrackedChanges()

    Dim oField As Field
    Dim oRevision As Revision

    For Each oField In ActiveDocument.Fields
        For Each oRevision In oField.Parent.Range.Revisions
            Select Case oRevision.Type
            Case wdRevisionInsert
                With oRevision
                    revisionText = .Range.Text

                        For Each iRevision In oField.Parent.Range.Revisions
                            Select Case iRevision.Type
                            Case wdRevisionDelete
                                With iRevision

                                If StrComp(revisionText, iRevision.Range, vbTextCompare) = 0 Then
                                    oRevision.Accept
                                    iRevision.Accept
                                End If

                            End With
                            End Select
                         Next iRevision

                        End With
                End Select
         Next oRevision
    Next oField
End Sub 

Cảm ơn, Adam. Thật không may, giải pháp này không giúp tôi. Đầu tiên, các trường được cập nhật khi mở và in - mở chắc chắn không cho tôi cơ hội tắt trước. Và tôi muốn các trường được cập nhật (và được đánh dấu nếu thay đổi) - đó là lý do tại sao chúng là các trường. Tôi nghi ngờ giải pháp cuối cùng cho vấn đề này sẽ là tập lệnh VBA đi qua & amp; tìm tất cả các trường hợp như tôi đã mô tả và loại bỏ các dấu hiệu sửa đổi giả. Thật không may, kỹ năng mã hóa của tôi quá gỉ để tự viết nó. Có lẽ ai đó đã làm điều đó cho tôi? Hoặc tốt hơn, có lẽ có một giải pháp trực tiếp hơn?
yosh m

@Yosh, đủ công bằng. Có hy vọng rằng một macro có thể giúp đỡ ở đây, tôi đã cập nhật bài viết của mình.
Adam

Ồ Adam, cảm ơn. Tôi đang cho +1 này cho nỗ lực của bạn trước cả khi tôi kiểm tra - đó thực sự là trên & amp; vượt ra ngoài. Cảm ơn bạn. Tôi sẽ kiểm tra & amp; nếu nó lừa tôi sẽ quay lại để đánh dấu nó được chấp nhận. Cảm ơn một lần nữa.
yosh m

Ađam. Tôi đã thử chạy nó. có hai lỗi biên dịch do các biến không được khai báo, vì vậy tôi đã thêm vào iRevision As Revision và RevisonText As String. Sau đó, nó được biên dịch - nó chạy trong khoảng thời gian dài (nhiều giây) cho đến khi nhận được "Lỗi thời gian chạy '5852': Đối tượng được yêu cầu không khả dụng." tại dòng oRevision.Ac chấp nhận. Nhìn vào tài liệu, tôi thấy rằng dường như không có sửa đổi nào được chấp nhận. Bất kỳ đề xuất? Cảm ơn, Yosh.
yosh m

@Yosh, Cảm ơn, tôi đã thử macro bằng một vài tài liệu đầu vào đơn giản và nó đã hoạt động. Có bất kỳ cơ hội nào bạn có thể vệ sinh và đính kèm một tài liệu mà macro không hoạt động ở đâu đó không?
Adam

1

Gần đây tôi đã nhận ra rằng một giải pháp cho câu hỏi tôi đặt ra là KHÔNG sử dụng đánh dấu sửa đổi nào cả. Thay vào đó, sau khi tôi hoàn thành tất cả các thay đổi của mình, tôi sử dụng So sánh tệp để tạo phiên bản được đánh dấu lại của tài liệu. Khi thực hiện so sánh, tôi chắc chắn rằng không chọn các Lĩnh vực tùy chọn trong Cài đặt so sánh:

enter image description here

Vì tôi thường không quan tâm đến Định dạng Khoảng trắng những thay đổi tôi cũng chọn các tùy chọn đó. Kết quả cuối cùng (tôi thường chọn để tạo Tài liệu mới ) cung cấp cho tôi một tài liệu với các thay đổi nổi bật và không có các thay đổi không quan trọng và gây mất tập trung (như giá trị Trường).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.