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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2015, 11:28   #1
AbyAby
Новичок
Джуниор
 
Регистрация: 19.10.2015
Сообщений: 2
По умолчанию Макрос выделения текста в списке

Добрый день. Есть следующая проблема. В документе есть маркированный список, в каждом абзаце списка нужно выделить жирным определенную часть документа. Либо это тест до запятой. Либо, если запятой нет, то выделить нужно все первое предложение.
Я написала макрос для выделения первого предложения

Sub BoldSentence()
Dim Абзац As Word.Paragraph
For Each Абзац In ActiveDocument.Paragraphs
If Абзац.Range.ListFormat.ListType = _
WdListType.wdListBullet Then
Абзац.Range.Sentences(1).Bold = True
End If
Next Абзац
End Sub

И нашла макрос, который выделяет текст до запятой
http://www.homepc.ru/2002/68/16182/

Но я не могу понять как их совместить) Никто мне не поможет?

Последний раз редактировалось AbyAby; 19.10.2015 в 11:40.
AbyAby вне форума Ответить с цитированием
Старый 19.10.2015, 17:03   #2
AbyAby
Новичок
Джуниор
 
Регистрация: 19.10.2015
Сообщений: 2
По умолчанию

Я написала макрос следующим образом.

Dim Абзац As Word.Paragraph
For Each Абзац In ActiveDocument.Paragraphs
If Абзац.Range.ListFormat.ListType = _
WdListType.wdListBullet Then
Абзац.Range.Sentences(1).Bold = True
End If

If Абзац.Range.ListFormat.ListType = _
WdListType.wdListBullet Then
Selection.Find.ClearFormatting

With Selection.Find
.Text = "\, *\. "
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.Font.Bold = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With

Selection.Find.Execute
Selection.Font.Bold = wdToggle
End If

Next Абзац


Проблема в следующем. В первом предложении часто встречается фамилия с инициалами. Встречается и середине и в начале и в конце.
Например,
Сегодня идет дождь, как отметил А.В. Иванов. Он будет идти и завтра.

Макрос выделяет в жирным первое предложение до слова Иванов. Потом снимает выделение между запятой и точкой. И оставляет выделенным В.Иванов, что логично, потому что такое условие задано)
Как это исправить?
Таких сообщений процентов 15-20 от всего массива, не критично, можно поправить при проверке, но хотелось бы прям красиво сделать)
AbyAby вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для выделения кириллицы в Word inspirer161 Microsoft Office Word 12 15.02.2015 19:46
Макрос для поиска и выделения слов Angry_Kitty Microsoft Office Word 11 07.10.2014 22:01
Цвет выделения текста RichEdit Kib Общие вопросы Delphi 6 14.02.2013 10:20
команда выделения текста Gunet Общие вопросы Delphi 3 19.11.2009 18:53