我想通过删除注释中员工的签名来快速取消标识文件的身份(是的,我已经有一个删除标识信息的方法,而不仅仅是文本本身)。可以搜索所有员工姓名并替换为“”的宏非常有用。我敢肯定有一个简单的方法可以做到这一点。
我尝试过的所有方法都失败了,要么找不到注释中的文本,要么在我复制/粘贴用于“查找/替换”一个名称的记录代码并针对其他20-30个名称进行调整后无法正常工作。我尝试了四种可能适用于正文的不同查找/替换代码,但没有一种适用于注释。
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Employee Name 1"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Employee Name 2"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
在所有20到30名员工之间复制/粘贴此操作会失败(没有错误,只是不能替换)。我敢肯定,无论如何,还有一种更优雅的方法,但是我对代码肯定不太熟悉。
答案 0 :(得分:0)
问题的措词尚不清楚100%是否还需要用于删除注释作者和姓名缩写的代码,还是仅在注释中引用员工姓名的文本。因此,下面的代码可同时实现这两个功能。
首先,声明一个数组并用应删除的员工姓名填充。这样可以更轻松地管理列表并缩短代码量(无需为每个员工复制/粘贴)。
然后,循环注释集合并执行两个测试。
Instr
检查姓名的存在。如果存在名称,则在Comment.Range
上运行查找/替换。 (注意:此代码仅包含准系统Find
属性,如果需要更多属性,则可能需要添加一些内容。)Author
和Initial
信息。在这里,作者姓名列表是Case
测试的一部分。如果注释中包含其中之一,则Author
和Initial
信息将设置为空字符串。请注意,该评论的Range
不会不包括评论的作者或姓名缩写信息,仅包括评论的内容(您可能知道,但其他阅读此内容的人可能没有)。 / p>
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