Я использую Word 2010. Насколько мне известно, эта проблема существовала в Word с незапамятных времен.
Когда я создаю поле в документе, поле обновляется, когда я принудительно это делаю (например, с помощью F9 или выбора меню правой кнопки мыши) или как побочный эффект открытия или печати файла. Все это хорошо — именно поэтому я использовал поле. Конечно, в большинстве случаев (иногда большую часть времени) обновление поля не приводит к изменению результирующего текста. Например, {numpages} или перекрестная ссылка или имя файла, скорее всего, не изменятся.
К сожалению, если у меня включено отслеживание изменений, каждое обновление поля помечается перечеркнутым (удаленным) старым результатом и вставленным новым значением. Это происходит даже если значение не изменилось. После нескольких эпизодов открытия, закрытия, печати, обновления и т. д. вы можете получить что-то вроде этого (в этом примере я использовал жирный шрифт вместо подчеркивания из-за ограничений редактора) для перекрестной ссылки
см. раздел2.3.4
2.3.42.3.42.3.4
IMHO, Word не должен считать это правкой, если текст результата не изменился. Если есть способ заставить Word сделать это в первую очередь, я хотел бы узнать об этом.
В качестве альтернативы, если есть какой-то способ легко удалить эти лишние (не)ревизии из моего документа (при этом сохранив все «настоящие» ревизии), это было бы еще одним решением моей проблемы.
Спасибо,
Йош.
решение1
Не полное решение, но вы можете избежать дублирования ревизий, отключив отслеживаемые ревизии непосредственно перед обновлением, а затем включив их снова после завершения обновления. Вы можете пойти дальше и привязать макрос к сочетанию клавиш, чтобы автоматически выполнять эти шаги.
Боюсь, это не поможет, если поля обновляются автоматически перед печатью, однако вы можете отключить это поведение, перейдя в меню параметров, вОтображатьи снять галочкуОбновите поля перед печатью.
EDIT: Я написал следующий макрос, который должен удалить такие ненужные правки из полей. Возможно, потребуются некоторые улучшения скорости, если это возможно.
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
решение2
Недавно я понял, что решение поставленного мной вопроса — вообще НЕ использовать маркировку ревизий. Вместо этого, после того как я закончу все свои изменения, я использую Compare Files для создания версии документа с маркировкой Rev. При сравнении я обязательноне выбрать the Поляопция в настройках сравнения:
Так как обычно меня это не волнуетФорматированиеиПустое пространствоизменения Я также отменяю выбор этих опций. Окончательный результат (я обычно выбираю создатьНовый документ) дает мне документ с существенными изменениями и без неважных и отвлекающих (не)изменений (вроде значений полей).