Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 8

Расшерение найденного текста

22.12.2015, 17:27. Показов 4263. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно найти в тексте заданное слово, при это расширить выделение слова на n слов влево и на n слов вправо. Это число тоже задано. И закрасить этот текст красным цветом.
Я пока нашла только само слово, а как расширить объект я не знаю, помогите, пжлст.
Ищу с помощью Find
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.12.2015, 17:27
Ответы с готовыми решениями:

Изменения цвета найденного текста
Я новичок в этом деле. Написала код, ошибок не выдает, но и в открытом документе никаких изменений не происходит. В общем, суть в том,...

Форматирование найденного на странице текста
Помогите пожалуйста с заданием. Задать список слов (например Begin, End и т.д.). Проанализировать весь документ, и если встречается слово...

Выделение найденного текста
Доброго времени суток. В ричтекстбокс пишут текст, в текстбокс группу символов которую нужно найти в тексте, код считает количество...

11
190 / 59 / 20
Регистрация: 16.07.2013
Сообщений: 234
22.12.2015, 17:48
Visual Basic
1
2
3
4
5
Sub asd()
n = "1Слово 2Слово"
x = "Найденное слово"
MsgBox (n & " " & x & " " & n)
End Sub
Честно говоря мало описания, текст где находится? в экселе? в ворде? что значит расширить на n слов влево? а сколько букв в каждом слове? пишите еще
0
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 8
22.12.2015, 23:04  [ТС]
Даны два документа. В одном из них выделено красным шрифтом ключевое слово w. Если второй документ содержит такое слово, то требуется найти (и выделить красным шрифтом) такую n-окрестность [-nw, nw] этих слов, в которой процент одинаковых слов максимален.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
23.12.2015, 00:52
Expand() — расширить выделение на слово, предложение, абзац и т.п. — в зависимости от переданного параметра. Метод Extend() позволяет расширить выделение (вместо слова — предложение, вместо предложения — абзац и т.п.). Метод, обратный методу Expand() — Shrink().
0
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 8
23.12.2015, 01:44  [ТС]
мне нужно на определенное количество слов и я не знаю как это задать. Экспандом не получается
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
23.12.2015, 03:01
Справка не помогает?
Word VBA предлагает целый ряд методов для перемещения и изменения размеров диапазонов и выделенных областей. В настоящем разделе я рассматриваю только самые важные из них; для знакомства с другими методами вам придется обращаться к справочной системе.

Метод Expand увеличивает существующий диапазон или выделенную область, добавляя блок текста в их конец. Блок может представлять собой символ, слово, абзац или что-нибудь другое. Вы можете добавить только один заранее определенный блок; кроме того, добавление подобных блоков в начале диапазона или выделенной области не допускается.

Для добавления к выделенной области слова, которое будет следовать сразу за ней, используйте такую инструкцию:

Selection.Expand(wdWord)

Вы можете использовать любую из следующих констант для расширения объекта; wdCharct er, wdWord, wdSent ence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow, wdTable и (только для объектов Selection) wdLine. По умолчанию используется константа wdWord.

Теперь нам следует остановиться на одном щекотливом моменте: объекты Selection (но не диапазоны) также содержат метод Expand. Этот метод включает соответствующее средство Word, которое позволяет расширять выделенную область при перемещении указателя мыши. Каждый раз, когда программа вызывает метод Extend, выделенная область увеличивается на блок текста, который следует сразу за точкой вставки: текущее слово, предложение, абзац, выделенный фрагмент пли целый документ. Если вы указали аргумент в виде одного символа, например, Selection.Expand ( "С" ). выделенная область будет расширена вплоть до первого встретившегося указанного символа.

Word VBA позволяет вам повторно определять начало и конец диапазона или выделенной области. Только имейте в виду, что методы, в имени которых присутствует слово Move, изменяют расположение диапазона или выделенной области: они не перемещают текст, который содержится в указанном объекте.

Метод Move изменяет диапазон или выделенную область, начиная с их сжатия, отмечая их расположение, а в них уже нет никакого текста. Расположение совпадает с началом исходного объекта. После этого метод Move перемещает "сжатый" объект в соответствии с вашими инструкциями. По окончании перемещения вы можете использовать методы Expand и Mover,nd для наполнения объекта текстом.

Приведенный ниже пример перемещает именованный диапазон в документе на два абзаца назад. Обратите внимание на то, что вы используете именованную константу в качестве значения аргумента Uni t (список всех допустимых именованных констант приведен в разделе

"Расширение диапазонов и выделенных областей" раньше в этой главе). Аргумент Count представляет собой целое положительное число, если вы хотите перемешать объект вперед по документу (т.е. к его концу), или отрицательное, если вы хотите перемещать объект назад по документу. В приведенном ниже примере аргументы не заключены в скобки, поскольку возвращенное методом значение (количество перемещенных элементов) здесь не используется:

oTheRange .Move Unit : = waParagraph, Count, : = -2

Методы MoveStart. и MoveEnd работают практически так же, как и метод Move, только они изменяют начальную или конечную точку диапазона или выделенной области соответственно. Приведенная ниже инструкция перемешает начало выделенной области на три слова ближе к концу документа:

Select-on.KoveStart Unit : = wdWord, Count := 3

Обратите внимание на то, что если вы перемещаете начальную точку объекта в конец, Word сожмет диапазон или выделенную область и переместит их в соответствии с указанными инструкциями.

Еще одна пара методов, Start Of или EndOf, перемешает или расширяет начало или конец диапазона или выделенной области. Метод Start Of перемещает начало объекта обратно к началу текущего блока, в то время как метод EndOt перемешает конец объекта вперед к концу текущего блока.

Вы можете использовать аргумент Extend с любым методом для контроля над действиями Word. Если перемешаемая сторона объекта уже находится с того края, к которому вы пытаетесь ее переместить, ничею не происходит. Используйте константу wdMove для сжимания объекта или константу wdExtend для перемещения только указанной стороны. Ниже приведен соответствующий пример:

Selection. Start Of Unit := wdSentence, Extend := wdMove

Очень часто вам необходимо сжать диапазон или выделенную область в точку, которая не содержит никакого текста. С технической точки зрения свернутые диапазон или выделенная область - это такие диапазон или выделенная область, начальная и конечная точки которых совпадают. Сжатие подобных объектов оказывается важным в тех ситуациях, когда вам необходимо вставить поле, таблицу или другой элемент до или после выделенной области или диапазона, обойдясь без замены текста. (Вы можете вставить обычный текст, новые абзацы, а также некоторые другие элементы в "несжатые" диапазон или выделенную область).

Используйте метод Collapse для сжатия диапазона или выделенной области. Вы можете сжать объект к его начальной или конечной точке, используя необязательный аргумент Direction. Приведенная ниже инструкция сжимает выделенную область к ее начальной точке:

Selection.Collapse
1
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
23.12.2015, 03:40
И правильно делаете! Осталось привлечь макрорекордер и отточить логику кода. Какова цель?

Я сделал почти как у Michael99, только ближе к делу:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub Макрос7() ' Макрос записан 23.12.15
    Selection.HomeKey wdStory 'соответствует сочетанию Ctrl-Home
    
    With Selection.Find
        .Text = "слово*слово"   ' 2n (для этого примера) либо (2n + 1) раз
        .Replacement.Font.Color = vbRed
        .MatchWildcards = True
    End With
    
    Selection.Find.Execute Replace:=wdReplaceAll 'окрасили окрестность
End Sub
А г-жа Shlaypnikova и Андрей Поляков, тоже близкие к лингвистическим кругам, подошли к теме частоты слов, я бы сказал, более широко:
  1. Частотность слов в word (Андрей Поляков; решение: KoGG + ваш покорный)
  2. Дан текст. Вывести слова, встречающиеся в тексте не по одному разу (Shlaypnikova; там Alex_Gur грамотно разрулил за счёт наработок форума)
Миниатюры
Расшерение найденного текста   Расшерение найденного текста  
1
 Аватар для KoGG
5640 / 1622 / 418
Регистрация: 23.12.2010
Сообщений: 2,430
Записей в блоге: 1
23.12.2015, 09:48
Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub Расширить_выделение_на_N_Слов_влево_и_вправо()
    ' Расширяет выделение на n слов влево и n слов вправо. Отдельно стоящие знаки препинания в Word считаются словами.
    Dim N%: N = 3
    Dim n2%: n2 = N * 2 + 1
    N = N + 1
    With Selection
        .MoveLeft Unit:=wdWord, Count:=N, Extend:=wdMove
        .MoveRight Unit:=wdWord, Count:=n2, Extend:=wdExtend
    End With
End Sub
2
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
23.12.2015, 10:17
А кто сказал что это Ворд? Я например чаще работаю с документами Экселя или Поверпойнта. Думаю пока ТС не прояснил задачу рано торопиться...
1
Заблокирован
23.12.2015, 10:25
Цитата Сообщение от Hugo121 Посмотреть сообщение
А кто сказал что это Ворд?
Ну с этим-то ясно -
Цитата Сообщение от Arinakaa Посмотреть сообщение
Я пока нашла только само слово - Изменения цвета найденного текста
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
23.12.2015, 11:21
Я не экстрасенс, мне не просто...
0
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 8
23.12.2015, 11:55  [ТС]
Попробую, напишу, что получилось, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2015, 11:55
Помогаю со студенческими работами здесь

Поиск и подсветка найденного текста
Здравствуйте. Есть код поиска: For i = 0 To БилетDataGridView.ColumnCount - 1 For j = 0 To...

Sphinx и подсветка найденного текста
Суть в том, что при нахождении слова, заданного в поиске, нужно выделить небольшие куски текста с этим словом и подсветить его. пример:...

Поиск текста из Edit в переменной и вывод найденного в Memo
Всем привет. Прошу помощи так как сам разобратся не могу уже целый день. (Только еще начинаю изучать Delphi) Загружаю txt с профелями в...

Не могу удалить расшерение
проверял утилитами , такими как Доктор Вэб и Каспер , удалил трояны , толку нет , site navigation все равно появляется, комп тормозит

Найти среднюю длину слов и удалить из текста все слова длина, которых меньше найденного значения
Найти среднюю длину слов и удалить из текста все слова длина, которых меньше найденного значения. Количество слов уже нашёл, а вот как...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru