Isao想知道是否有一种方法可以轻松地构造文档中所有唯一单词的列表。他不需要知道每个单词出现多少次。他只需要一列独特的单词。此外,同一单词的大写和小写变体应计为同一单词。

没有内置的Word功能或工具可以执行此操作。但是,在VBA中,您可以访问Words集合,其中包括文档中的所有单词。考虑到这一点,您可以创建一个宏,该宏在文档中建立一个唯一单词的排序列表,然后将这些单词添加到文档的末尾。

Sub UniqueWordList()

Dim wList As New Collection     Dim wrd     Dim chkwrd     Dim sTemp As String     Dim k As Long

For Each wrd In ActiveDocument.Range.Words         sTemp = Trim(LCase(wrd))

If sTemp >= "a" And sTemp <= "z" Then             k = 0             For Each chkwrd In wList                 k = k + 1                 If chkwrd = sTemp Then GoTo nw                 If chkwrd > sTemp Then                     wList.Add Item:=sTemp, Before:=k                     GoTo nw                 End If             Next chkwrd             wList.Add Item:=sTemp         End If nw:

Next wrd

sTemp = "There are " & ActiveDocument.Range.Words.Count & " words "

sTemp = sTemp & "in the document, before this summary, but there "

sTemp = sTemp & "are only " & wList.Count & " unique words."



ActiveDocument.Range.Select     Selection.Collapse Direction:=wdCollapseEnd     Selection.TypeText vbCrLf & sTemp & vbCrLf     For Each chkwrd In wList         Selection.TypeText chkwrd & vbCrLf     Next chkwrd End Sub

请注意,文档中的每个单词都被提取出来,转换为小写,然后按排序顺序添加到wList集合中。

仅当单词是字母时才添加单词(因此,不包括数字,也包括标点符号),并且宏不注意单词的大小写。您还应该注意,宏仅查看文档主体中的单词。它在诸如页眉,页脚,文本框或形状之类的位置不包含任何单词。

可以轻松更改宏以适应各种需求。例如,您可以让宏将单词表粘贴到单独的文档中,而不是放在当前文档的末尾。您需要做的就是在此处第二行显示的出口行之前插入此行:

sTemp = "There are " & ActiveDocument.Range.Words.Count & " words "

sTemp = sTemp & "in " & ActiveDocument.Name & ", but there "

sTemp = sTemp & "are only " & wList.Count & " unique words."



Documents.Add     ActiveDocument.Range.Select     Selection.Collapse Direction:=wdCollapseEnd     Selection.TypeText vbCrLf & sTemp & vbCrLf     For Each chkwrd In wList         Selection.TypeText chkwrd & vbCrLf     Next chkwrd End Sub

请注意,宏中只有一个实质性更改:添加了“ Documents.Add”方法以创建用于摘要的新文档。

有关将单词从文档中取出的其他想法(包括计算单词频率的宏),您可能需要参考此技巧:

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(7697)适用于Microsoft Word 2007、2010、2013和2016。