Исао задается вопросом, есть ли способ легко составить список всех уникальных слов в документе. Ему не нужно знать, сколько раз встречается каждое слово; ему просто нужен список уникальных слов. Кроме того, варианты одного и того же слова в верхнем и нижнем регистре должны считаться одним и тем же словом.

Для этого нет встроенной функции или инструмента Word. Однако в VBA вы можете получить доступ к коллекции слов, которая включает все слова в документе. Имея это в виду, вы можете создать макрос, который создает отсортированный список уникальных слов в документе, а затем добавляет эти слова в конец документа.

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» для создания нового документа для сводки.

Для некоторых других идей по извлечению слов из документа, включая макросы, которые учитывают частоту слов, вы можете обратиться к этому совету:

link: / wordribbon-Generating_a_Count_of_Word_Occurrences [Генерация количества вхождений слов].

_Примечание: _

Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (7697) относится к Microsoft Word 2007, 2010, 2013 и 2016.