Лучшее, что я мог выяснить, это создать новый комментарий вокруг нового текста, удалив предыдущий комментарий. Я попытался изменить свойство Start
Comment.Scope, но это не имеет никакого эффекта.
Следующий код работает. То, что меня давно отбросило, заключается в том, что Word, по-видимому, не чтит объект Comment. Если я поставлю комментарий для переменной, добавьте новый комментарий, а новый комментарий будет вставлен/проиндексирован перед оригиналом, а новый заменит оригинал в переменной объекта. Итак, в приведенном ниже коде cmtOrig фактически содержит только что добавленный комментарий, а не оригинал. Таким образом, cmtOrig.Delete фактически удаляет cmtNew, в результате оставшийся комментарий не содержит целевой диапазон. Но, похоже, он работает надежно, используя Индекс.
Единственное предостережение состоит в том, что вы теряете любое форматирование в комментарии.
Sub ReplaceCommentRangeText()
Dim rngCommentScope As word.Range
Dim cmtOrig As word.Comment, cmtNew As Comment
Dim cmtIndex As Long
Dim rngTarget As word.Range
Set cmtOrig = ActiveDocument.Comments(1)
cmtIndex = cmtOrig.index
Set rngCommentScope = cmtOrig.Scope
rngCommentScope.Text = "C"
Set cmtNew = ActiveDocument.Comments.Add(rngCommentScope, cmtOrig.Range.Text)
'Debug.Print cmtNew.index, cmtIndex
If cmtNew.index = cmtIndex Then
ActiveDocument.Comments(cmtIndex + 1).Delete
Else
ActiveDocument.Comments(cmtIndex).Delete
End If
End Sub