替换文本上发表评论的范围跨度(字)

问题描述:

我有一个Word文档,与意见替换文本上发表评论的范围跨度(字)

Ms Word Document with comments

我想以编程方式替换文本,是受评论:

Sub ReplaceTextOfComments() 
    For Each c In ActiveDocument.Comments 
     If c.Range.Text = "BAR" Then 
      c.Scope.Text = "H" 
     End If 
    Next c 
End Sub 

我得到的结果如下:

Ms Word Document with comments

有没有办法在替换文本时保留评论的范围?

我能弄清楚的最好方法是在新文本周围创建新评论,删除以前的评论。我曾尝试更改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