1

Тема: Поиск и выделение разных форматов одновременно

Спасибо за сайт, во многом помог мне! Как ни искал, не смог найти...

Возможно ли реализовать через Поиск выделение сразу нескольких форматов?.. Допустим, чтобы выделилось "красный цвет шрифта"_Пробел_"зеленый цвет шрифта"? Есть ли вообще оператор "ИЛИ" в поиске?

Сам бился с макросами, но даже функции выделения не нашел sad Подскажите, если кто знает smile

2

Re: Поиск и выделение разных форматов одновременно

Нет, нельзя. Форматирование определяется для всего искомого выражения. Точно также программно нельзя выделить разрозненные части текста, как при зажатой клавише Ctrl
Да и зачем выделять, если обработка происходит программно?

Лучше день потерять — потом за пять минут долететь!

3

Re: Поиск и выделение разных форматов одновременно

Логически оно так smile В ОпенОфисе, например, с помощью расширенного поиска можно проделать такую операцию. Но у меня уж очень большой объем текста, ОО виснит просто. Предлагаете макрос писать для этого дела? Подсобите с алгоритмом:
Задача: все пробелы, находящиеся между красным и зеленым текстом (знаком), заменить на знак абзаца.
Первая мысль: находим пробел, проверяем, находится ли слева красный текст И находится ли справа зеленый текст => заменяем пробел на знак абзаца.

Сколько, наскидку, займет время формата всего документа, если пробелов ~140 тыс.?..

4

Re: Поиск и выделение разных форматов одновременно

Вроде работает... smile в споре рождаетмся истина! ))

Sub Макрос2()
Dim a As Long
a = 1
For i = 1 To 3000
    Selection.Find.ClearFormatting
    Selection.Find.Text = " "
    Selection.Find.Execute
        Selection.MoveLeft Count:=2 'пробел+1 - проверка соседней левой буквы
        
        If Selection.Font.Bold = -1 Then
        Selection.MoveRight Count:=3 'буква + пробел + буква - идем на проверку соседней правой
        Else: Selection.MoveRight Count:=2: GoTo 1 ' продолжаем цикл, если не выполненно Условие1 (жирный, в данном случае)
        End If
  
               If Selection.Font.Underline = 1 Then
               Selection.MoveLeft Count:=1: Selection.TypeParagraph: a = a + 1 ' заменяем на абзац
               Else: Selection.MoveLeft Count:=1 ' если вообще ничего не найденно, выравнием курсор
               End If
1: Next i
        
  MsgBox a 'потом через поиск можно проверить количество абзацев
'1:
End Sub

5

Re: Поиск и выделение разных форматов одновременно

После драки кулаками не машут, но тем не менее...

Я бы попробовал обойтись заменой:
1. Заменить зеленый на зеленый с последующим знаком ‡
2. Заменить красный на красный с предшествующим знаком ‡
3. Заменить "‡ ‡" на абзац
4. Удалить знаки ‡

6

Re: Поиск и выделение разных форматов одновременно

Марк, Ваш способ изящнее! smile в силу своей неграммотности, написал макрос... А в том, что Вы описали, можно еще использовать > и <, чтобы искать начало и конец слова. Тогда вообще замечательно. Красота!
Всем спасибо! smile