Это не на 100% ясно из формулировки вопроса, требуется ли также код для удаления автора и инициалов комментариев, или просто текст в комментариях, который относится к именам сотрудников.Таким образом, приведенный ниже код выполняет оба действия.
Сначала объявляется массив , который заполняется именами сотрудников, которые должны быть удалены.Это упростит управление списком и сократит объем кода (не нужно копировать / вставлять для каждого сотрудника).
Затем сбор комментариев зацикливается и выполняются два теста.
- Содержит ли комментарий текст имя любого сотрудника .Чтобы определить это, массив имен сотрудников зацикливается и проверяется наличие имени с помощью
Instr
.Если имя присутствует, Find / Replace запускается на Comment.Range
.(Примечание: этот код содержит только базовые свойства Find
, вам может понадобиться добавить некоторые вещи, если требуется больше.) - Удалить
Author
и Initial
information .Здесь список имен авторов является частью теста Case
.Если комментарий содержит один из них, информация Author
и Initial
устанавливается в пустую строку.
Обратите внимание, что Range
комментария не включает в себяинформация об авторе или инициалах комментария, только содержание комментария (которое вы можете знать, но другие, читающие это, могут не знать).
Sub RemoveAuthorFromAllComments() ' TestLoopCommentWords()
Dim C As Word.Comment, rng As Word.Range
Dim employees() As Variant, e As Variant
employees = Array("Cindy Meister", "John Doe", "Mary Jane")
For Each C In ActiveDocument.Comments
Set rng = C.Range
For Each e In employees
If InStr(rng, e) <> 0 Then
With rng.Find
.Text = e
.Replacement.Text = ""
.Execute Replace:=wdReplaceAll
End With
End If
Next
Select Case C.Author
Case "Cindy Meister", "John Doe", "Mary Jane"
C.Author = ""
C.Initial = ""
Case Else
Debug.Print C.Author
End Select
Next
End Sub