Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/259: Рейтинг темы: голосов - 259, средняя оценка - 4.78
24 / 24 / 4
Регистрация: 13.03.2011
Сообщений: 326
1

Поиск слов в документе средствами Word

27.05.2011, 18:58. Показов 51681. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть какая нибудь функция реализующая алгоритм стандартного поиска Word`а ?
Просто перебор коллекции Words явно медленнее...
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2011, 18:58
Ответы с готовыми решениями:

Поиск слов такого типа <* слово , .*> и замена их на другие слова средствами Word-VBA
Есть кнопка в документе,при открытии появляется форма где видно несколько полей,куда нужно вписать...

Можно ли создать подобие формулы в документе Word средствами VBA?
На скрине пример документа, где всегда значения в тексте должны быть равны значениям в таблице....

Word: макрос, подсчитывающий количество слов в документе
Помогите создать макрос, посчитывающий количество слов в документе!

Поиск слов с цифрой в документе word
Добрый день!!! Подскажите пожалуйста как средствами C# в документе word искать слова вида: &quot;Пункт...

17
Заблокирован
27.05.2011, 20:23 2
Нужно использовать метод Find.
Метод Find используется с объектом Selection, Range и Content.
При использовании метода Find, в оперативной памяти компьютера создаётся объект, который состоит из нескольких членов.
При использовании Find с Selection объект сохраняется в оперативной памяти до тех пор, пока работает программа Word. Кроме того, результат такого поиска отображается в диалоговом окне Найти и заменить.
В остальных случаях создаётся временный объект, который находится в оперативной памяти только когда код проходит через строки:
Visual Basic
1
2
With ActiveDocument.Content.Find
End With
В связи с этим можно и код писать по-разному для разных случаев.

Ниже приведены коды, которые находят слово text и делают его жирным.

Код с Selection:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Sub Макрос1()
With Selection.Find
    'Очистка
    .ClearFormatting
    .Replacement.ClearFormatting
    'Искомый текст.
    .Text = "text"
    'Текст на который меняем.
    'Если .Format = True, то меняется только форматирование.
    .Replacement.Text = ""
    'Сделать найденный текст жирным.
    .Replacement.Font.Bold = True
    'Направление поиска: если True - то в конец документа.
    'Если False - то в начало документа.
    .Forward = True
    'wdFindStop - поиск в выделенной области или
    'от места нахождения курсора до конца документа.
    'wdFindContinue - поиск по всему документу.
    'wdFindAsk - предлагается выбор:
    'продолжить поиск по всему документу или остановить
    .Wrap = wdFindStop
    'Определяет: производится замена текста или форматирования.
    'Если .Format = True и .Replacement.Text = "", то замена форматирования.
    'Если .Format = True и .Replacement.Text = "text2", то замена текста и форматирования.
    'Если .Format = False и .Replacement.Text = "", то удаление текста.
    'Если .Format = False и .Replacement.Text = "text2", то замена текста.
    .Format = True
    'С Match - смотрите флажки в диалоговом окне Найти и заменить.
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    'Здесь действие выполняется по замене.
    .Execute Replace:=wdReplaceAll
    'Очистка.
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = ""
End With
End Sub

Код с Content (в данном коде Content можно заменить Range):
Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub P2()
'Поиск и замена во всём документе.
With ActiveDocument.Content.Find
    .Text = "text"
    .Replacement.Text = ""
    .Replacement.Font.Bold = True
    .Format = True
    .Execute Replace:=wdReplaceAll
End With
End Sub
2
24 / 24 / 4
Регистрация: 13.03.2011
Сообщений: 326
27.05.2011, 20:36  [ТС] 3
Спасибо то что надо
И еще один вопрос, немного не в тему - что за объект такой Content и чем он отличается от Range ?
0
Заблокирован
27.05.2011, 20:55 4
Цитата Сообщение от Lupus Посмотреть сообщение
что за объект такой Content и чем он отличается от Range ?
Вообще документ состоит из нескольких частей (я все не могу вспомнить):
  1. колонтитулы,
  2. сноски,
  3. надписи,
  4. собственно документ.
Content - это и есть собственно документ.

Что касается Range, то надо различать:
  1. свойство Range;
  2. метод Range.

Метод Range есть только у объекта Document (Activedocument) и Shapes (про Shapes не знаю, ни разу не использовал). С помощью метода можно задавать определённый диапазон, например:
Visual Basic
1
Activedocument.Range(Start:=0, End:=10)
что означает диапазон документа от начала и до десятого знака включительно. Если ничего не указано:
Visual Basic
1
Activedocument.Range
то означает - весь документ. Т.е. в данном случае Range, то же самое, что Content (хотя может разница и есть в чём-то).

В остальных случаях (когда Range не относится к Documents (Activedocument), Range является свойством и с помощью него узнают порядковый номер символа (но там путаница большая, если используются в документе кроме символов другие объекты (например, рисунки)) и содержимое объекта (например, абзаца):
Visual Basic
1
2
3
4
Sub P3()
'Определение номера символа, когда начинается абзац.
MsgBox ActiveDocument.Paragraphs(1).Range.Start
End Sub
Visual Basic
1
2
3
4
Sub P4()
'Получаем содержимое абзаца.
MsgBox ActiveDocument.Paragraphs(1).Range
End Sub
2
4 / 4 / 0
Регистрация: 05.02.2015
Сообщений: 17
06.02.2015, 20:44 5
О -О -о нашла то что искала. Вот еще бы подсказали, как этот найденный текст залить черным
0
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
07.02.2015, 05:50 6
Цветом по умолчанию (обычно это жёлтый) вот так: www.cyberforum.ru/vba/thread160134.html#11 (строка 11)

Только чёрный цвет заливки надо туда вписать:
Visual Basic
1
    If tumbler Then .HitHighlight .text, vbBlack 'затемнение искомого текста (вместо жёлтой подсветки)'
2
4 / 4 / 0
Регистрация: 05.02.2015
Сообщений: 17
08.02.2015, 19:45 7
Честно говоря не поняла, а что можно в этот скрипт добавить, что б заливка была черным?
Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub P2()
'Поиск и замена во всём документе.
With ActiveDocument.Content.Find
    .Text = "text"
    .Replacement.Text = ""
    .Replacement.Font.Bold = True
    .Format = True
    .Execute Replace:=wdReplaceAll
End With
End Sub
0
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
08.02.2015, 20:28 8
Да не в этот, а в тот. Всего один параметр: vbBlack.
0
4 / 4 / 0
Регистрация: 05.02.2015
Сообщений: 17
08.02.2015, 20:53 9
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub ProductSignesHighlighting()
Static tumbler As Boolean
    Selection.HomeKey wdStory 'переход в начало документа'
    tumbler = Not tumbler 'переключение «выделить (нечётное выполнение) / снять выделение»'
    
    With Selection.Find
    .ClearHitHighlight
    .MatchWildcards = True
    .Text = "контроль"
    'шаблон для поиска букв
    If tumbler Then .HitHighlight .Text, vbBlack 'затемнение искомого текста 
    End With
End Sub
Вот вставила. Но не работает
1
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
09.02.2015, 00:04 10
Это через раз срабатывает. Давайте попробуем так, без переключателя:
Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub Highlighting_test()
Const цвет = vbBlack
    Selection.HomeKey wdStory 'переход в начало документа'
    
    With Selection.Find
    .ClearHitHighlight        'отмена прошлых выделений цветом
    .Text = "л"
    .HitHighlight .Text, цвет 'подсветка л'
    End With
End Sub
3
4 / 4 / 0
Регистрация: 05.02.2015
Сообщений: 17
09.02.2015, 20:19 11
А что еще добавить,в этот же скрипт что б найденный текст был белым?

Добавлено через 1 час 3 минуты
то ест шрифт белым и заливка черным

Добавлено через 8 часов 19 минут
Спасибочки. Задача решена
1
2080 / 1238 / 464
Регистрация: 20.12.2014
Сообщений: 3,237
10.02.2015, 00:55 12
Цитата Сообщение от natasia Посмотреть сообщение
Спасибочки. Задача решена
Не по теме:
Ну не видят кнопку и всё тут . Администрация, может на красненьком фоне ее сделать? Заметней будет Или скриптик написать, чтобы при употреблении слова "спасибо" в тексте кнопка срабатывала автоматически
3
Sasha_Smirnov
10.02.2015, 03:17
  #13

Не по теме:

Ага, трижды!

0
4 / 4 / 0
Регистрация: 05.02.2015
Сообщений: 17
10.02.2015, 08:56 14
Можете в правилах форума написать, что нельзя благодарить текстом "спасибо". Чем плохо, что человек благодарен за помощь?
1
2080 / 1238 / 464
Регистрация: 20.12.2014
Сообщений: 3,237
10.02.2015, 09:27 15
Цитата Сообщение от natasia Посмотреть сообщение
Чем плохо, что человек благодарен
Мы смеялись над тем, что текстом благодарят, а кнопкой - забывают, или не знают о ней
0
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
11.02.2015, 00:20 16
Важно, насколько пригодилась полученная программа. Каков эффект от темы.

А благодарность — это не баллы и очки, это нечто свыше. Хотя «обналичивание» тоже приятно!
0
4 / 4 / 0
Регистрация: 05.02.2015
Сообщений: 17
11.02.2015, 08:51 17
ок
1
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
28.10.2015, 04:52 18
Цитата Сообщение от chumich Посмотреть сообщение
при употреблении слова "спасибо"…
А за «Дякую!» и «Дзякую!» — дважды! За интернационализм.
Цитата Сообщение от SapFeaR Посмотреть сообщение
Огромное спасибо
(если не шутя) тянет, думаю, баллов на 5!
0
28.10.2015, 04:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2015, 04:52
Помогаю со студенческими работами здесь

Замена слов в документе Word
как сделать?

Подсчет слов в документе word
Здраствуйте, мне нужно написать програму на языке Pascal которая считывает количество символов,...

Подсчитать количество слов в документе Word
Здравствуйте! Встала передо мной следующая задача: имеется большое количестов документов word( для...

Interop.Word, замена ключевых слов в документе
Здравствуйте. VisualStudio 2008, Office 2007, никак не могу реализовать замену ключевых слов в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru