替换文本上发表评论的范围跨度(字)
问题描述:
我有一个Word文档,与意见替换文本上发表评论的范围跨度(字)
我想以编程方式替换文本,是受评论:
Sub ReplaceTextOfComments()
For Each c In ActiveDocument.Comments
If c.Range.Text = "BAR" Then
c.Scope.Text = "H"
End If
Next c
End Sub
我得到的结果如下:
有没有办法在替换文本时保留评论的范围?
答
我能弄清楚的最好方法是在新文本周围创建新评论,删除以前的评论。我曾尝试更改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