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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2012, 16:18   #1
!abiturient!
 
Регистрация: 04.07.2011
Сообщений: 8
По умолчанию Поиск во всем документе Word, включая колонтитулы, надписи, примечания и сноски

Задание: Разработать приложение позволяющее производить поиск во всем документе, включая колонтитулы, надписи, примечания и сноски. Поиск можно начинать с любого места в документе. При нахождении фрагмента поиск останавливается, но приложение должно позволить продолжить поиск в оставшейся части документа, а также удалять результаты поиска.

Делаю так:
Код:
Private Sub CommandButton1_Click()
 With Selection.Find
  '.Replacement.ClearFormatting
  '.ClearFormatting
  .Text = TextBox1.Text
  .Forward = False
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute
  If Not .Found Then
   MsgBox "Текст не найден"
  End If
 End With
End Sub

Скрипт ищет начиная с положения курсора. Но если я ставлю курсор, в текстовой части, то он ищет в текстовой части, если в колонтитуле, то и ищет в колонтитуле. А нужно чтобы скрипт искал начиная с положения курсора во всех разделах. Помогите пожалуйста!

Последний раз редактировалось !abiturient!; 10.07.2012 в 21:14.
!abiturient! вне форума Ответить с цитированием
Старый 11.07.2012, 12:24   #2
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

1. Что нужно сделать это выделить в отдельную процедуру код поиска

Код:
Private Sub FindText()
 With Selection.Find
  .Replacement.ClearFormatting
  .ClearFormatting
  .Text = TextBox1.Text
  .Forward = False
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute
 End With
End Sub
Потом, когда у нас будут готовы остальные процедуры мы допишем сюда код обнаружения текста.
2. Так как метод Find работает в объектах Range и Selection, то процедуру поиска текста по отдельности придется проводить в каждом объекте(сноски, колонтитулы, рамки, текстовые рамки, примечания и т.д.), для основного объекта в котором будет проводиться поиск выберем Section(Раздел), т.к. документ состоит из разделов.
Пименов Александр вне форума Ответить с цитированием
Старый 11.07.2012, 13:25   #3
!abiturient!
 
Регистрация: 04.07.2011
Сообщений: 8
По умолчанию

Напишите пожалуйста как с Section(Раздел) это реализовать. При условии, что поиск должен начинаться с раздела в котором находится курсор и с положения курсора.
!abiturient! вне форума Ответить с цитированием
Старый 11.07.2012, 13:30   #4
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Не точна постановки задачи. Нужен последовательный поиск во всем документе (встретили текст - ищем в тексте, встретили надпись - ищем в надписи и т.д.), или в каждом наборе описанных элементов (во всем тексте, во всех надписях, во всех сносках и т.д.)?

Если первое, то самое сложное - организовать перебор всех описанных элементов, в том порядке, в котором они встречаются в документе.

Второй вариант намного проще.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 11.07.2012, 13:52   #5
!abiturient!
 
Регистрация: 04.07.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Вождь Посмотреть сообщение
Не точна постановки задачи. Нужен последовательный поиск во всем документе (встретили текст - ищем в тексте, встретили надпись - ищем в надписи и т.д.), или в каждом наборе описанных элементов (во всем тексте, во всех надписях, во всех сносках и т.д.)?

Если первое, то самое сложное - организовать перебор всех описанных элементов, в том порядке, в котором они встречаются в документе.

Второй вариант намного проще.
Хотелось бы первым вариантом. Но устроит и второй, главное чтобы поиск начинался с положения курсора и так далее до конца с перебором всех разделов, колонтитулов и т.д.
!abiturient! вне форума Ответить с цитированием
Старый 11.07.2012, 14:58   #6
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

В том то и дело что через Section, мы получаем доступ ко всем объектам, в том числе и колонтитулам
Пименов Александр вне форума Ответить с цитированием
Старый 11.07.2012, 16:01   #7
!abiturient!
 
Регистрация: 04.07.2011
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Пименов Александр Посмотреть сообщение
В том то и дело что через Section, мы получаем доступ ко всем объектам, в том числе и колонтитулам
Может подскажете как кодом реализовать?
!abiturient! вне форума Ответить с цитированием
Старый 11.07.2012, 18:35   #8
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Свяжитесь со мной по почте paa1977@mail.ru
Пименов Александр вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Колонтитулы в Word 2010 Nord18 Microsoft Office Word 0 01.12.2011 07:37
Колонтитулы Word 2003 Евгений К. Microsoft Office Word 3 14.07.2010 14:09
Объект PageSetup. Как проверить пустые ли колонтитулы в документе Word?? =) YaponskijGorodovoj Компоненты Delphi 0 09.06.2010 23:09
Как организовать поиск в документе Word посредством Delphi? Pinkygirl Microsoft Office Excel 5 05.01.2010 15:52
Колонтитулы при альбомной ориентации в MS Word OldNick85 Microsoft Office Word 1 14.11.2007 07:12