Тема: Необх-мо найти выделенный текст и подчеркнуть
Здрвствуйте!
Необх-мо в Worde найти выделенный текст (залито зеленым цветом) и подчеркнуть.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Здрвствуйте!
Необх-мо в Worde найти выделенный текст (залито зеленым цветом) и подчеркнуть.
выделяете нужное и магнитофон на запись, ок?
выделяете нужное и магнитофон на запись, ок?
почему то не работает
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
Selection.Find.Text = wdGreen
While Selection.Find.Execute = True
i = 0
While Selection.Text <> wdGreen
Selection.MoveLeft Unit:=wdCharacter, Count:=15, Extend:=wdExtend
Selection.Font.UnderlineColor = wdColorAutomatic
Selection.Font.Underline = wdUnderlineSingle
i = i + 1
Wend
Wend
вы реально на запись ставили?
вы реально на запись ставили?
реально.
я тоже поставил
Selection.Find.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
If Selection.Font.Underline = wdUnderlineNone Then
Selection.Font.Underline = wdUnderlineSingle
Else
Selection.Font.Underline = wdUnderlineNone
End If
не увидел магических
Wend
Wend
согласен, эту строку Selection.HomeKey Unit:=wdStory вверху можно оставить
я тоже поставил
Selection.Find.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
If Selection.Font.Underline = wdUnderlineNone Then
Selection.Font.Underline = wdUnderlineSingle
Else
Selection.Font.Underline = wdUnderlineNone
End Ifне увидел магических
Wend
Wend
я так понимаю в строках нужно дописать след-ее:
With Selection.Find
.Text = wdGreen
.Replacement.Text = ""Selection.Font.Underline = wdUnderlineSingle
Так или не так ?
Ципихович Эндрю пишет:я тоже поставил
Selection.Find.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
If Selection.Font.Underline = wdUnderlineNone Then
Selection.Font.Underline = wdUnderlineSingle
Else
Selection.Font.Underline = wdUnderlineNone
End Ifне увидел магических
Wend
Wendя так понимаю в строках нужно дописать след-ее:
With Selection.Find
.Text = wdGreen
.Replacement.Text = Selection.Font.Underline = wdUnderlineSingleТак или не так ?
.Text = wdGreen - нет, это то что ищете, как Вы указали вы ищете переменную wdGreen, то есть если бы выше было wdGreen = "ав", это бы означало, что Вы ищете ав, а так ничего не ищем - т.е. любой текст
.Replacement.Text = ""Selection.Font.Underline = wdUnderlineSingle - нет, это то на что меням, ни на что не меняем
То есть ничего не ищем и ни на что не меняем, просто выделяем, а потом выделенное подчёркиваем
.Text = wdGreen - нет, это то что ищете, как Вы указали вы ищете переменную wdGreen, то есть если бы выше было wdGreen = "ав", это бы означало, что Вы ищете ав, а так ничего не ищем - т.е. любой текст
.Replacement.Text = ""Selection.Font.Underline = wdUnderlineSingle - нет, это то на что меням, ни на что не меняем
То есть ничего не ищем и ни на что не меняем, просто выделяем, а потом выделенное подчёркиваем
Недоработка в коде есть, в том плане, что когда я выделяю весь документ (а он порядка из 200 страниц у меня в word) , то выделяется всё. Хотелось бы как в моем примере выделялись только определенные слова.
там расписано всё
сноровку нужно иметь....
сноровку нужно иметь....
Спасибо за присланные алгоритмы Эндрю, но мой вопрос так и остался не решенным .
И потом никак я не пойму:
>То есть ничего не ищем и ни на что не меняем, просто выделяем, а потом выделенное подчёркиваем.
Я считаю, нам надо все таки найти текст (выделенный заливкой), а потом как найдем текст сделать нижнее подчеркивание. Я спрашивал как найти выделенный заливкой текст, мы все таки все равно должны где то это указать ?
Чтобы найти выделенный цветом текст, это нужно указать. Вот что дала запись макроса:
Sub Макрос1()
'
' Макрос1 Макрос
'
'
Selection.Find.ClearFormatting
Selection.Find.Highlight = True
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Underline = wdUnderlineSingle
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Нужно обратить внимание на вторую строчку кода: именно она и указывает, что текст должен быть выделен цветом. Правда, как указать цвет выделения, я не нашёл. Но это не беда, небольшое допиливание напильником и всё заработает. Вместо последней строчки Selection.Find.Execute, нужно записать:
While Selection.Find.Execute
If Selection.Range.HighlightColorIndex = wdGreen Then
Selection.Font.Underline = wdUnderlineSingle
End If
Wend
Вот макрос
Sub Макрос1()
'
' Макрос1 Макрос
'
'
'
Dim booFind As Boolean, rng As Range, rngEnd As Long
Set rng = Selection.Range
rngEnd = rng.End
booFind = True
Do
rng.Find.ClearFormatting
rng.Find.Highlight = True
With rng.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.Execute
If .Found = True Then
If rng.HighlightColorIndex = wdYellow Then
rng.Font.Underline = wdUnderlineSingle
rng.HighlightColorIndex = wdAuto
On Error Resume Next
Set rng = ActiveDocument.Range(rng.End, rngEnd)
If Err.Number > 0 Then Exit Do
End If
Else
Exit Do
End If
End With
Loop
End Sub
aap77, вот эта задача как раз из тех, где применение объекта Range не оправдано, т.к. становится больше кода и лишних операций. А именно, когда нужно при поиске вводить свои действия с найденным текстом, то лучше пользоваться Selection, т.к. после выполнения пользовательских действий над текстом поиск продолжается, а в случае с Range он прерывается и необходимо переопределять диапазон для запуска нового поиска.
что-то я советовал, а теперь сам в ступоре, с выделением работает, а если просто шрифт зелёный - не работает
Sub Ищём_выделенное_цветом_wdGreen_и_подчёркиваем()
Selection.Find.ClearFormatting
Selection.Find.Highlight = True
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Underline = wdUnderlineSingle
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
While Selection.Find.Execute
'цвет зелёный
If Selection.Font.Color = wdColorGreen Then
'выделение зелёным цветом
'If Selection.Range.HighlightColorIndex = wdGreen Then
'сделать шрифт подчёркнутым
Selection.Font.Underline = wdUnderlineSingle
End If
WendEnd Sub
что-то я советовал, а теперь сам в ступоре, с выделением работает, а если просто шрифт зелёный - не работает
Sub Ищём_выделенное_цветом_wdGreen_и_подчёркиваем()
Selection.Find.ClearFormatting
Selection.Find.Highlight = True
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Underline = wdUnderlineSingle
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
While Selection.Find.Execute
'цвет зелёный
If Selection.Font.Color = wdColorGreen Then
'выделение зелёным цветом
'If Selection.Range.HighlightColorIndex = wdGreen Then
'сделать шрифт подчёркнутым
Selection.Font.Underline = wdUnderlineSingle
End If
WendEnd Sub
Пробежался быстренько, но опять но не подчеркнул.
Товарищи, в том-то и дело, что у объекта Find, есть такое замечательное свойство как Found, после выполнения оператора Execute, если Found = True, то с найденным фрагментом можно делать все, что позволяет код VBA, в том числе, и задавать дополнительные условия, а потом уже выполнять операции по замене. У Вас же в примерах цикл While Selection.Find.Execute…Wend выполняется только к первому найденному фрагменту. Так же в моем примере использован объект Range основе обекта Selection и свойство rngEnd = rng.End для определения точки выхода из цикла во избежание зацикливания программы
…У Вас же в примерах цикл While Selection.Find.Execute…Wend выполняется только к первому найденному фрагменту…
Он выполняется к каждому найдённому фрагменту по очереди. Т.е. сначала у меня задаются условия поиска, а затем поиск вызывается в цикле While.
aap77, я не говорю, что твой код не правильный. Он не оптимальный
cobra77777, попробуй макросы из сообщений 15 и 16 этого должно хватить
ВСЕМ БОЛЬШОЕ СПАСИБО ЗА ПОМОЩЬ. ВСЕ ПОЛУЧИЛОСЬ УРАААААААА.
РАБ.КОД:
Sub Макрос1()
'
' Макрос1 Макрос
Selection.Find.ClearFormatting
Selection.Find.Highlight = True
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Underline = wdUnderlineSingle
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
While Selection.Find.Execute
If Selection.Range.HighlightColorIndex = wdGreen Then
Selection.Font.Underline = wdUnderlineSingle
End If
Wend
End Sub
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Необх-мо найти выделенный текст и подчеркнуть
При работе с многофункциональными современными редакторами текста, такими как, например, Microsoft Word, очень часто возникает потребность обсудить проблемы и нюансы работы. Наш сайт о Microsoft Office Word даст ответ про: рамка мишки ворд. В зависимости от типа текста, цели, с которой он создается или редактируется, пользователю приходится осваивать те или иные функции, искать пути автоматизации своей работы, особенно это актуально для значительных объемов текста. На портале о Microsoft Office Word вы узнаете про: microsoft word как отключить клавишу alt office. Также бывают трудности при переходе от одной версии Ворда к другой.
Помочь пользователям текстового редактора решили на сайте Ворд Эксперт и форуме сайта. Наш сайт о Microsoft Office Word даст ответ про: завис ворд, как сохранить документ. Тут собрана вся необходимая информация, касающаяся программы, доступны полезные ссылки и списки литературы, выложены готовые ответы на самые стандартные вопросы, кроме того, оригинальные решения различных проблем при работе с программой. Наш сайт о Microsoft Office Word даст ответ про: в каких случаях новая строка предложения не является красной. Например, на форуме вы найдете макросы для нумерации разделов, шаблоны оглавлений, принципы работы с горячими клавишами и многое другое. На портале о Microsoft Office Word вы узнаете про: как удалить недавно открытые вкладки?.
Прежде всего, Ворд Эксперт, ориентирован на автоматизацию работы Ворда, тут обсуждаются разнообразные макросы и шаблоны, но также вы найдете сравнительные характеристики различных версий, обсуждение настроек программы и способов редактирования и форматирования тексов. На портале о Microsoft Office Word вы узнаете про: скачать активатор офис 2007.
Кроме того, вы можете описать свою проблему в специальном подразделе и получить готовое решение.