2016-04-12 84 views
1

我有一個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

有沒有辦法在替換文本時保留評論的範圍?

回答

2

我能弄清楚的最好方法是在新文本週圍創建新評論,刪除以前的評論。我曾嘗試更改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