Wd: Замена текста с форматированием
В ворде есть текст (находится в конце некоторых абзацев), который покрашен в синий цвет и сделан мелким шрифтом 9 пт. Мне надо к нему добавить еще полужирность и подчеркивание.
Я написал:
[COLOR="Navy"]Sub Макрос2()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With ActiveDocument.Content.Find
.ClearFormatting
.Font.Color = wdColorDarkBlue
.Font.Size = 9
.Text = ""
With .Replacement
.Font.Bold = True
.Font.Underline = True
.Text = ""
End With
.Execute FindText:=" ", ReplaceWith:=" ", Format:=True, _
Replace:=wdReplaceAll
End With
End Sub
[/COLOR]
Но меняются только пробелы. Как заставить обрабатывать все символы?
Спасибо.
Во-вторых, твой Word тратит кучу сил на обновление экрана во время работы твоих макросов. Если просмотр "мультфильмов" на экране не есть необходимая цель, рекомендую начинать программу оператором
Application.ScreenUpdating = False
и заканчивать оператором
Application.ScreenUpdating = True
Это убыстрит работу программы и избавит тебя от нервного тика, вызванного созерцанием моргающего экрана.
В третьих, попробуй вместо
.Execute FindText:=" ", ReplaceWith:=" ", Format:=True, _
Replace:=wdReplaceAll
написать
.Execute FindText:="*", ReplaceWith:="*", Format:=True, _
Replace:=wdReplaceAll, MatchWildcards:=True
Надеюсь, сработает.
to Cutty Sark: ты чо живешь в интернете?? Как не зайду.. Уже все отвечено!:)
По поводу мелькания экрана. Я вначале макроса просто сворачиваю окошко ворда ([COLOR="Navy"]Application.WindowState = wdWindowStateMinimize[/COLOR]) и ковыряюсь в PageMakere, пока в фоне крутится макрос.
Но попробую еще дополнительно отключить перерисовку экрана. В любом случае хуже не будет (а может и быстрее заработает).
Докладываю по поводу wildcard. В результате такоого кода весь искомый текст стал действительно пж. и подчеркнутым.. но в виде звездочек.
Это известная проблемка. Wildcard можно использовать только для поиска, но не для замены. А вот в PageMaker'e если в окне поиска и замены не задавать никаких символов, то будет меняться только формат.
ПОЛУЧИЛОСЬ!!!! Надо было так: FindText:="*", ReplaceWith:="".
Т.е. звезду ставить только в первом случае. Ай да мы!:) Das ist fantastisch... Люблю я программирование... :cool:
(если оффтоп, прошу прощения).
Цитата: Dmitry2064
И вдогонку такой вопросик. А если .Font.Size = то ли 9, то ли 10. Можно ли куда-то подоткнуть оператор [COLOR="Navy"]OR[/COLOR], что бы не прогонять макрос дважды с разными размерами?
(если оффтоп, прошу прощения).
(если оффтоп, прошу прощения).
Думаю, нельзя. Если только вообще отказаться от указания размера шрифта (если других размеров там не встречается).
Цитата: koltaviy
offtop:
to Cutty Sark: ты чо живешь в интернете?? Как не зайду.. Уже все отвечено!:)
to Cutty Sark: ты чо живешь в интернете?? Как не зайду.. Уже все отвечено!:)
По всякому бывает. :)
Цитата: Cutty Sark
Думаю, нельзя. Если только вообще отказаться от указания размера шрифта (если других размеров там не встречается).
:(
(придется зарядить двойной прогон - ну и ладно :cool: )
Спасибо. :)