更改代词性别(Microsoft Word)
罗伯特希望有一个宏来更改文档中代词的性别,并想知道是否有建议进行此类更改。
如果您正在寻找一个宏来更改文档中所有代词的性别,这相对简单-您所需要的就是对通用代词进行通用搜索并将其替换为女性代词的操作,反之亦然。
但是,如果您要寻找一个可以替换代词的宏(第一次使用是男性,第二次使用是女性,等等)(例如在非小说类写作中经常这样做),那就是另一回事了。最好由熟练的编辑来进行判断,以决定要进行哪些更改以及这些更改的扩展范围。
因此,假设您想走通用路线,最好的方法是使用一个宏,该宏利用通配符搜索使用成对代词(一个男性代词和一个对应的女性代词)来指定要进行的更改。下面的示例使用这种方法将他,他,他和他自己更改为女性形式(她,她,她的,她自己),反之亦然。
Sub MaleToFemale() GenderChange (True) End Sub
Sub FemaleToMale() GenderChange (False) End Sub
Sub GenderChange(isMale As Boolean) Dim aRange As Range Dim fTest As Boolean Dim j As Long Dim k As Long Dim male Dim female male = Array("he", "He", "HE", "him", "Him", "HIM", "his", _ "His", "HIS", "himself", "Himself", "HIMSELF") female = Array("she", "She", "SHE", "her", "Her", "HER", "hers", _ "Hers", "HERS", "herself", "Herself", "HERSELF") ActiveDocument.TrackRevisions = True Set aRange = ActiveDocument.Range With aRange.Find .ClearFormatting .Replacement.ClearFormatting .Replacement.Highlight = False .Forward = True .Format = False .Wrap = wdFindStop .Format = False .Highlight = False .MatchCase = False .MatchWholeWord = False .MatchSoundsLike = False .MatchAllWordForms = False .MatchPrefix = False .MatchWildcards = True j = UBound(male) For k = 0 To j If isMale Then .Text = "<" & male(k) & ">" .Replacement.Text = female(k) Else .Text = "<" & female(k) & ">" .Replacement.Text = male(k) End If fTest = aRange.Find.Execute(Replace:=wdReplaceAll) Next k End With ActiveDocument.TrackRevisions = False End Sub
请注意,清单中包含三个宏。您应该使用MaleToFemale宏将男性代词更改为女性代词,并使用FemaleToMale宏将其他方向更改。代词对本身位于男性和女性数组中的GenderChange宏中。
请注意,每个代词都使用大写和小写字符的不同组合三次包含在数组中。这是因为通配符搜索区分大小写,因此需要对每个案例实例进行不同的搜索。
请注意,宏在进行任何更改之前还会打开“跟踪更改”。这样,宏会在文档中记录每个更改,然后您可以使用常规的“跟踪更改”解析过程来评估每个更改。这样做是因为英语非常不准确,并且某些我们通常认为代词的单词的用法含糊不清。例如,单词“他的”和“她的”可以用作所有格人称代词或所有格形容词。在上下文中查看它们时,只能区分正确的用法,而宏显然不这样做。底线-更改后阅读,因此可以确保文档仍然有意义。
注意:
如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。
_WordTips_是您进行经济有效的Microsoft Word培训的来源。
(Microsoft Word是世界上最流行的文字处理软件。)本技巧(12896)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。