Сообщение от Lupus
что за объект такой Content и чем он отличается от Range ?
Вообще документ состоит из нескольких частей (я все не могу вспомнить):
- колонтитулы,
- сноски,
- надписи,
- собственно документ.
Content — это и есть собственно документ.
Что касается Range, то надо различать:
- свойство Range;
- метод Range.
Метод Range есть только у объекта Document (Activedocument) и Shapes (про Shapes не знаю, ни разу не использовал). С помощью метода можно задавать определённый диапазон, например:
Visual Basic | ||
|
что означает диапазон документа от начала и до десятого знака включительно. Если ничего не указано:
Visual Basic | ||
|
то означает — весь документ. Т.е. в данном случае Range, то же самое, что Content (хотя может разница и есть в чём-то).
В остальных случаях (когда Range не относится к Documents (Activedocument), Range является свойством и с помощью него узнают
порядковый номер символа
(но там путаница большая, если используются в документе кроме символов другие объекты (например, рисунки)) и
содержимое объекта
(например, абзаца):
Visual Basic | ||
|
Visual Basic | ||
|
ВикиЧтение
VBA для чайников
Каммингс Стив
Поиск и замена текста с помощью VBA в Word
Хотя это звучит и несколько необычно, но Find — это объект Word VBA. Объекты Find принадлежат диапазонам и выделенным областям. Для обнаружения или форматирования текста с помощью объекта Find вам потребуется выполнить следующие действия.
1. Получите доступ к объекту Find для определенного диапазона или выделенной области. Если вам необходимо просмотреть целый документ, используйте свойство Content объекта Document для получения доступа к соответствующему диапазону, как показано ниже:
ActiveDocument.Content.Find
2. Определить свойства объекта Find в соответствии с тем, что же вы ищете и как именно вы хотите проводить поиск.
3. Вызвать метод Execute объекта Find. Соответствующий пример приведен ниже:
With OpenRange.Find
.Clear Formatting
.Text = «pogosticks»
.Execute
End With
Для свойств, значения которых явно вы задать не можете, объект Find выбирает параметры, использованные последними или те, которые в настоящий момент заданы в диалоговом окне Найти и заменить программы Word. Именно по этой причине вам всегда следует включать метод Clear Formatting перед началом нового поиска- он позволяет убрать все ранее определенные для проведения поиска параметры форматирования.
Работа с найденным текстом
Основная работа метода Execute — обнаружение первого экземпляра искомого текста или форматирования в указанном диапазоне или выделенной области. После выполнения этого метода вам прежде всего следует определить, было ли найдено то, что вы ищете. Для подобной проверки используйте свойство Found объекта Find совместно с инструкцией If…Then, как показано на примере следующей заготовки программного кода:
If .Found = True Then
(выполнение определенных действий с найденным текстом)
Else
(отображение соответствующего сообщения)
End If
Если метол Execute нашел необходимый текст, исходный диапазон или выделенная область переопределяются таким образом, чтобы содержать найденный текст. Это очень важный момент, поскольку это означает, что вы можете работать с найденным текстом посредством свойств и методов исходного объекта. В следующем примере, представляющем собой расширенный вариант первого фрагмента кода из настоящего раздела, инструкция .Parent. Italic = True обращается к родительскому объекту по отношению к объекту Find, т.е. диапазону OpenRange. При выполнении этой инструкции диапазон OpenRange теперь содержит только найденный фрагмент текста, так как только в нем предусмотрено форматирование курсивом:
With OpenRange.Find
.СlearFormatting
.Text = «pogosticks»
If .Found = True Then
.Parent.Italic = True
Else
MsgBox «No pogosticks found.»
End If
End with
Объект Reolacement принадлежит (а значит, является его свойством) объекту Find. При написании кода для операции поиска и замены вам следует задать свойства и выполнить методы объекта Replacement.
Следующий фрагмент кода заменяет все экземпляры фразы pogosticks словом skateboards. Выделенная область изменяется при выполнении критерия поиска, поскольку доступ к объекту Find осуществляется через объект Selection:
With ActiveDocument.Content.Find
.ClearFormatting
.Text = «pogosticks»
With .Replacement
.ClearFormatting
.Text == «skateboards»
End With
.Execute Replace := wdReplaceAll
End With
Обратите внимание на то, что метод Execute может использовать аргумент Replace, предназначенный для контроля за тем, будут ли заменены все обнаруженные экземпляры обнаруженного фрагмента текста, или только первый.
Читайте также
Поиск и замена данных
Поиск и замена данных
В программе HtmlPad реализована возможность быстрого поиска данных. Этот механизм полезно использовать при работе с большими программными кодами или с большими объемами данных, поскольку поиск требуемой информации вручную (например, путем просмотра
Поиск и замена данных
Поиск и замена данных
В программе Extra Hide Studio имеется удобный механизм для быстрого поиска и замены данных. Эта возможность особенно актуальна при работе с большими исходными кодами, поскольку поиск данных путем просмотра всего кода может занять слишком много времени, и к
Глава 2 Подготовка текста в Microsoft Word
Глава 2 Подготовка текста в Microsoft Word
• Общие сведения о Word 2007• Основные правила форматирования• Вставка стандартных блоков в документ• Нумерация страниц и колонтитулы• Проверка правописания, поиск синонимов, перевод слов• Сноски и закладки• Настройка параметров
3.1. Поиск и замена фрагментов
3.1. Поиск и замена фрагментов
Текстовый редактор успешно справляется с поиском и заменой текста в отдельном файле. Однако, если это же нужно сделать сразу в нескольких файлах, лучше воспользоваться специальными программами, с помощью которых можно заменить фрагменты
Поиск и замена текста
Поиск и замена текста
В текстовом редакторе Adobe InDesign можно воспользоваться полезнейшей функцией поиска и замены фрагментов текста. Причем, раз мы имеем дело с программой верстки, найденные фрагменты можно не только заменить другими, но и оформить каким-то образом –
Поиск и замена форматирования
Поиск и замена форматирования
Для поиска текста с определенным форматированием используйте свойства объекта Find, касающиеся форматирования. Они идентичны свойствам, используемым при работе с форматированием диапазона или выделенной области, как я уже отмечал в разделе
Автоматический поиск и замена данных
Автоматический поиск и замена данных
В процессе работы иногда возникает необходимость быстро найти те или иные данные (слово, текстовый фрагмент и т. д.) либо заменить одни данные на другие. Для решения такой задачи в Publisher 2007 реализован механизм автоматического поиска и
Поиск и замена
Поиск и замена
В новой версии Excel был полностью изменен пользовательский интерфейс и расширены функциональные возможности средства Найти и заменить. Теперь можно с помощью одной операции производить поиск и замену по всем листам книги, повторно выполнять запросы поиска
Поиск и замена символов
Поиск и замена символов
Иногда при подготовке электронных документов возникает задача поиска определенных текстовых фрагментов. Например, вы забыли номер чертежа, но помните, что в его названии или дополнительной информации, размещенной на чертеже, содержится
Глава 2 Подготовка текста в Microsoft Word
Глава 2
Подготовка текста в Microsoft Word
Microsoft Word – пожалуй, самая популярная на сегодняшний день программа, предназначенная для работы с текстами. Продукт компании Microsoft обладает всеми необходимыми возможностями, связанными с набором и правкой текстов любой сложности.
5.7. Поиск и замена
5.7. Поиск и замена
В документе можно производить автоматический поиск текста и замену его другим.Поиск и замена ведется по введенному образцу. Если в качестве образца указано слово «ход», то компьютер найдет и слово «пароход», если предварительно не поставить условие, что
13.3.4. Поиск и замена текста
13.3.4. Поиск и замена текста
Как вы уже догадались, окно Найти и заменить используется не только для перехода на нужную страницу. Вкладка Найти используется для поиска текста. Для быстрого доступа к этой вкладке нажмите Ctrl+F или выберите команду меню Правка, Найти. Нажмите
Поиск и замена
Поиск и замена
Для поиска в тексте документа нужного слова или сочетания символов служит окно поиска и замены (рис. 9.19), которое открывается нажатием Ctrl+F. Если надо, чтобы оно сразу открылось как окно замены, используйте сочетание Ctrl+H.
Рис. 9.19. Окно поиска и замены.Для
Поиск и замена фрагментов фильма
Поиск и замена фрагментов фильма
Очень часто бывает нужно найти в изображении или фильме Flash какой-либо текст и, возможно, заменить его на другой. Специально для этого Flash, как и многие другие программы, работающие с документами, предлагает богатые возможности по поиску и
Поиск и замена текста
Поиск и замена текста
Поиск определенного слова или фразы в большом документе является довольно непростой задачей, но ее можно значительно упростить, если воспользоваться командой Главная ? Редактирование ? Найти. В появившемся окне (рис. 5.20) введите искомый текст и
Поиск и замена данных
Поиск и замена данных
По современным меркам таблица с несколькими тысячами записей считается небольшой, но даже в такой таблице ручной поиск или отбор нужной информации может занять продолжительное время. С помощью средств поиска, сортировки и фильтрации нужные данные
Поиск заданной фразы в документах Word |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Sub Выделить_между() Dim MyRange As Range, rStart&, rEnd& Set MyRange = ActiveDocument.Content With MyRange With .Find .ClearFormatting .Text = "Структура активов" .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .Execute If .Found Then rStart = MyRange.End: rEnd = rStart End With End With Set MyRange = ActiveDocument.Content With MyRange With .Find .Text = "Внеоборотные активы" .Execute If .Found Then rEnd = MyRange.Start End With End With If rEnd > rStart Then ActiveDocument.Range(rStart, rEnd).Select Selection.Copy End If End Sub Sub Выделить_между2() Dim r Set r = ActiveDocument.Range With r.Find .ClearFormatting .Text = "Структура активов*Внеоборотные активы" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True If .Execute Then ActiveDocument.Range(r.Start + 4, r.End - 4).Select Selection.Copy Else MsgBox "Текст не найден!", vbExclamation End If End With End Sub Sub Макрос1() ' ' Макрос1 Макрос For Each dd In ActiveDocument.Tables asq = asq + 1 dd.Name Next End Sub
Валерий спрашивает:
Как из текста в 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
Если вы не знаете, как подключить к документу и применить эти макросы, изучите следующие заметки с сайта:
Создание макроса из готового кода
Автоматическая запись макроса
Dim d As Long, ePos& d = 0 ePos = Selection.End 'поиск в содержимом выделенного текста With Selection.Range.Duplicate.Find .Text = "${*}" 'эта опция отвечает за поиск с использованием подстановочных знаков 'не работает когда установлено в положение False, или её нет вообще 'если установлена в положение True, тогда работает .MatchWildcards = True Do While .Execute If .Parent.End > ePos Then Exit Do 'wdBrightGreen - ярко-зеленый = 4 'wdwdYellow - желтый = 7 .Parent.HighlightColorIndex = 7 d = d + 1 Loop End With