Статьи из блога
Поиск слов и сохранение их в отдельном документе
Валерий спрашивает:
Как из текста в 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
Если вы не знаете, как подключить к документу и применить эти макросы, изучите следующие заметки с сайта:
Создание макроса из готового кода
Рубрика: Вопрос-Ответ, Макросы
Метки: макросы | поиск и замена
Просмотров: 18199
Подписаться на комментарии по RSS
Версия для печати
Метки: макросы | поиск и замена
Просмотров: 18199
Подписаться на комментарии по 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
Комментариев: 7
Здравствуйте! Простите, а как сделать, чтобы копировалось не слово в новый документ а строка содержащая это слово?
Строку или абзац?
Если абзац, то нужно строку
заменить на
Я же вроде написал - строку!
И еще вопрос: будет ли работать макрас если мне, например, нужны не все слова на букву "а", а только те, которые начинаются на буквосочетание "ар"?
И с цифрами не работает... :-(
а как сделать чтобы найти слова заклеюченные в ""
Чтобы можно было искать спецсимволы, перед ними нужно ставить обратную черту \
Добрый день!
Подскажите, а если в документах есть единообразная двухмерная табличка. В первой колонке идет название значения, которое всегда единое, а в правой части значение. Мне надо взять значение одной строки, вставить ее в excel. Затем взять значение другой строки и вставить справа от первой. Такую операцию надо выполнить по 2000 документов, причем если вдруг такой таблицы не окажется, нужно просто пропустить документ. Как будет выглядеть скрипт?
Подскажите, пожалуйста, знатоки, как изменить этот макрос, чтобы он мог:
- находить введённое слово
- выводить целиком абзац с эти словом
- и далее выводить абзацы текста до нахождения второго слова
(весь вывод в новый документ, как в данном макросе).
Например, нужно вывести текст, находящийся между:
[город] и [[конец фрагмента]]
Заранее благодарен!