Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2012, 11:16   #1
cw_o
Пользователь
 
Регистрация: 25.10.2009
Сообщений: 92
По умолчанию Результаты поиска

Не могу найти способ, чтобы просмотреть результаты поиска с помощью объекта Find.
Код:
With Selection.Range.Find
        .ClearFormatting
        .text = "sample"
        .Forward = True
        .Wrap = wdFindContinue
        '...
        .Execute
    End With
Дальше могу только получить булевый результат в Selection.Range.Find.Found. Мне нужно вывести количество найденных "sample" во всем документе и организовать возможность последовательного перехода к найденному тексту.
cw_o вне форума Ответить с цитированием
Старый 14.12.2012, 15:08   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Код:
	'Коллекция для координат найденных слов
	Dim TextCoords as New Collection
	With Selection.Range.Find
			.ClearFormatting
			.text = "sample"
			.Forward = True
			While .Execute
				TextCoords.Add Selection.Start & "" & Selection.End
			Wend
	End With
	MsgBox "Найдено " & TextCoords.Count & " совпадений"
Ну а затем, перебирая элементы коллекции можно выделять ранее найденные фрагменты текста
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 14.12.2012, 17:24   #3
cw_o
Пользователь
 
Регистрация: 25.10.2009
Сообщений: 92
По умолчанию

Работает не совсем стабильно... Как сделать, чтобы результаты поиска не зависели от текущего выделения и положения курсора? Чтобы поиск выполнялся во всем документе.
Какое значение должно быть у параметра Wrap?
cw_o вне форума Ответить с цитированием
Старый 15.12.2012, 07:56   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Можно и без использования выделения, через диапазон
Код:
    'Коллекция для координат найденных слов
    Dim TextCoords As New Collection
    Dim oRng As Range
    Set oRng = ActiveDocument.Content
    With oRng.Find
            .Text = "sample"
            .Forward = True
            While .Execute
                TextCoords.Add oRng.Start & ";" & oRng.End
            Wend
    End With
    MsgBox "Найдено " & TextCoords.Count & " совпадений"
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма поиска (несколько параметров поиска) Nastasya83 Microsoft Office Access 1 19.04.2012 15:48
макрос для поиска позиций и вывода данных на лист поиска mr-111 Microsoft Office Excel 12 13.03.2012 15:03
Форма поиска - задать диапазон поиска VictorM Microsoft Office Excel 9 21.04.2011 00:12
результаты экзамена Gula1706 Общие вопросы C/C++ 2 28.11.2010 20:21