Статьи из блога
Подсчет количества некоторых слов в документе
Если вам нужно определить количество вхождений в документ некоторого слова, то здесь может помочь следующий макрос (навеяно заметкой Грега Макси
Вы выделяете некое слово и запускаете макрос, который после подсчета выдает сообщение о количестве найденных слов:
Sub CountWords() 'макрос подсчета количества определенных слов в документе 'для подсчета количества вхождений конкретного слова, это слово должно быть выделено Dim rng As Range Dim sWord As String Dim i As Long Set rng = ActiveDocument.Range Application.ScreenUpdating = False If Selection.Type = wdSelectionIP Then MsgBox "Слово не выделено", vbExclamation Else 'удаляем знак абзаца справа от слова If Right(Selection.Text, 1) = Chr(13) Then Selection.MoveLeft wdCharacter, 1, wdExtend End If sWord = Trim(Selection.Text) 'Убираем прообелы вокруг слова и запоминаем Selection.Collapse wdCollapseStart With rng.Find .ClearFormatting .Replacement.ClearFormatting .Text = sWord .Forward = True .MatchWholeWord = True .MatchWildcards = False .Wrap = wdFindStop Do While .Execute i = i + 1 Loop End With Select Case i Case 2 To 4 MsgBox "Слово " & Chr(171) & sWord & Chr(187) & " встречается в документе " & i & " раза", _ vbInformation, "Подсчет слов" Case 1 MsgBox "Слово " & Chr(171) & sWord & Chr(187) & " встречается в документе " & i & " раз", _ vbInformation, "Подсчет слов" Case Else MsgBox "Слово " & Chr(171) & sWord & Chr(187) & " встречается в документе " & i & " раз", _ vbInformation, "Подсчет слов" End Select rng.Find.Text = "" End If Application.ScreenUpdating = True End Sub
Если вы не знаете, как подключить к документу и применить этот макрос, изучите следующие заметки с сайта:
Создание макроса из готового кода
Рубрика: Макросы
Метки: макросы | поиск и замена | статистика
Просмотров: 34303
Подписаться на комментарии по RSS
Версия для печати
Метки: макросы | поиск и замена | статистика
Просмотров: 34303
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 3 способа очистки списка недавно открытых документов
- Абзац с цветным фоном
- Автоматическая запись макроса
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Быстрая смена ориентации страниц документа
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрый ввод текста с помощью команды =rand()
- Ввод часто повторяющихся фрагментов текста
- Вставка будущей даты
- Вставка документа с книжной ориентацией в документ с альбомной ориентацией
- Вставка завтрашней даты
- Вставка изображений из указанной папки для Word 2007
- Вставка неформатированного текста
- Вставка скопированного текста в предопределенном формате
- Вставка текста с полями в нижний колонтитул
- Вставка текста с помощью кнопки
- Выделение видимой части экрана
- Двойная нумерация страниц в документе
- Задать обтекание текстом для всех рисунков в документе
- Замена жаргонных слов в тексте
- Замена знаков абзаца на пробелы в выделенном тексте
- Замена текста в скобках на пробел
Комментариев: 9
Ха!
Есть вариант получше - и без макроса!
Ctrl+F, птичку на "Выделить все фрагменты, найденные в", выбрать Основной документ, и кнопку Найти все.
В итоге получится не только количество элементов, и _все_ они будут выделены!
Причем не обязательно отдельные слова, но и их фрагменты
Luna, безусловно! Спасибо.
А в Worde 2007 есть "Выделить все фрагменты, найденные в"?
Есть. Там отдельная кнопка - "Выделение при чтении" с двумя командами: Выделить все и Снять выделение.
Luna, макрос для того и создан чтобы не делать миллион кликов.
С одним словом понятно. А допустим, если пять слов и не выделеных, а просто Вася 10раз Клава15раз...
Одна беда - если слово встретится 22 раза то на выводе будет "22 раз". Нужно отсекать еденицы перед выбором.
Здравствуйте, не знаю, жива ли еще тема, но всё же попробую. Подскажите, возможно ли как-то средствами Word создать окошко, в котором будет пеленговаться не только количество найденных слов, но и на каких страницах в тексте эти слова находятся?
Для подсчета отдельных слов этот макрос реально лучше, чем упоминаемый макрос Грега Макси. У Макси, как выяснилось, макрос считает и отдельное слово и "слово в слове". Пример: если в документе 3 раза встречается "папа" и 2 - "папазол", макрос Макси (TextCountQuick) выдаст, что "папа" встречается 5 раз - он засчитает часть слова "папазол" как "папа". А данный макрос (CountWords) такую ошибку мне не выдает. Автору респект и спасибо!!!