Создание списка уникальных слов (Microsoft Word)
Исао задается вопросом, есть ли способ легко составить список всех уникальных слов в документе. Ему не нужно знать, сколько раз встречается каждое слово; ему просто нужен список уникальных слов. Кроме того, варианты одного и того же слова в верхнем и нижнем регистре должны считаться одним и тем же словом.
Для этого нет встроенной функции или инструмента 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.