Статьи из блога
Поиск слов и сохранение их в отдельном документе
Валерий спрашивает:
Как из текста в Word 2007 выбрать все слова на определенную букву, расположить их в алфавитном порядке и сохранить их в отдельном файле?
Валерий, вот пример макроса для ваших целей, подсказанный Александром Витером.
Sub startWordsChar2() 'Поиск слов, начинающихся с определенной буквы и перенос их в 'отсортированный по алфавиту список в новый документ Dim bukva As String Dim newDoc As Document Dim actDoc As Document Dim oPar As Paragraph Dim rng As Range Set actDoc = ActiveDocument Set rng = actDoc.Range Do bukva = InputBox("Введите начальную букву слова в поле:", "Поиск слов") If StrPtr(bukva) = 0 Then Exit Sub ElseIf Len(bukva) = 0 Then MsgBox "Введите пожалуйста начальную букву " & vbCr & "или нажмите кнопку 'Cancel" End If Loop Until Len(bukva) <> 0 Application.ScreenUpdating = False Set newDoc = Documents.Add 'Ищем слово, начинающееся с указанной буквы в любом регистре With actDoc.Range.Find .Text = "<[" & StrConv(bukva & bukva, vbProperCase) & "][А-Яа-яЁё]@>" .MatchWildcards = True While .Execute Application.StatusBar = "Добавляем " & bukva newDoc.Range.InsertAfter Trim(.Parent.Text) newDoc.Range.InsertParagraphAfter Wend End With 'Сортируем содержимое нового документа newDoc.Range.Sort , "Paragraphs", wdSortFieldAlphanumeric, wdSortOrderAscending 'Удаляем первый пустой абзац newDoc.Paragraphs(1).Range.Delete 'Поскольку в каждом абзаце находится по одному слову, то нужно только перебирать абзацы и удалять _ все слова, которые содержатся в текущем For Each oPar In newDoc.Paragraphs If oPar.Range.End <> newDoc.Range.End Then With newDoc.Range(oPar.Range.End, newDoc.Range.End).Find .Text = oPar.Range.Text .Replacement.Text = "" .Execute Replace:=wdReplaceAll End With End If Next Application.ScreenUpdating = True End Sub
Если вы не знаете, как подключить к документу и применить эти макросы, изучите следующие заметки с сайта:
Создание макроса из готового кода
Рубрика: Вопрос-Ответ, Макросы
Метки: макросы | поиск и замена
Просмотров: 15321
Подписаться на комментарии по RSS
Версия для печати
Метки: макросы | поиск и замена
Просмотров: 15321
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 3 способа очистки списка недавно открытых документов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Абзац с цветным фоном
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Белый текст на синем фоне в Word 2007
- Быстрая смена ориентации страниц документа
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрый ввод текста с помощью команды =rand()
- Ввод повторяющихся фрагментов текста в Word 2007
- Ввод часто повторяющихся фрагментов текста
- Вертикальное выравнивание текста
- Возможно ли запретить копирование текста из документа Word?
- Вопрос о работе с графиками (диаграммами) в Word
- Вопросы и ответы о гиперссылках в редакторе Word
Комментариев: 6
Здравствуйте! Простите, а как сделать, чтобы копировалось не слово в новый документ а строка содержащая это слово?
Строку или абзац?
Если абзац, то нужно строку
заменить на
Я же вроде написал - строку!
И еще вопрос: будет ли работать макрас если мне, например, нужны не все слова на букву "а", а только те, которые начинаются на буквосочетание "ар"?
И с цифрами не работает... :-(
а как сделать чтобы найти слова заклеюченные в ""
Чтобы можно было искать спецсимволы, перед ними нужно ставить обратную черту \
Добрый день!
Подскажите, а если в документах есть единообразная двухмерная табличка. В первой колонке идет название значения, которое всегда единое, а в правой части значение. Мне надо взять значение одной строки, вставить ее в excel. Затем взять значение другой строки и вставить справа от первой. Такую операцию надо выполнить по 2000 документов, причем если вдруг такой таблицы не окажется, нужно просто пропустить документ. Как будет выглядеть скрипт?