我能弄清楚的最好方法是在新文本週圍創建新評論,刪除以前的評論。我曾嘗試更改Comment.Scope的Start
屬性,但似乎沒有任何效果。
以下代碼有效。很長一段時間裏,我拋棄了這個事實,就是Word顯然不尊重評論對象。如果我給一個變量設置了一個Comment,然後插入一個新的註釋,並且新的註釋被插入/索引到原始之前,那麼新的註釋會替換對象變量中的原始註釋。因此,在下面的代碼中,cmtOrig實際上包含剛添加的Comment,而不是原始的。所以這樣做cmtOrig.Delete實際上刪除了cmtNew,其結果是剩餘的Comment不包含目標Range。但它似乎確實使用索引工作。
但是,一個警告是,你在評論中失去了任何格式。
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