VBA-Word Поиск и замена символов...

Программирование на Visual Basic for Applications
Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

VBA-Word Поиск и замена символов...

Сообщение Rust » 20.04.2007 (Пт) 14:10

Как удалить из текста "Символ абзаца" при условии, что он присутствует в тексте в комбинации символов - "Символ абзаца"+"любая русская буква в нижнем регистре"

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.04.2007 (Пт) 14:20

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

Pavel55
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 27.10.2006 (Пт) 20:11

Сообщение Pavel55 » 20.04.2007 (Пт) 14:42

Знак абзаца ^p (галочка и английская буква p)

У меня была проблемы в своё время. Был файл, где были написаны строки текста через одну пустую строку, т.е.
- текст
- пустая строка (как бы щёлкнули лишний раз Enter)
- и опять текст.

Надо было удалить эти пустые строки. Я сделал это через замену (Ctrl+H): ^p^p заменил на ^p

P.S. Знак абзаца есть в меню Поиска (Ctrl+F) - Замены (Ctrl+H) - нажмите кнопку Больше - Специальный - Знак абзаца

Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Сообщение Rust » 20.04.2007 (Пт) 14:54

Про стандартный механизм поиска и замены я помню.
И, если речь идёт о лишних пробелах или абзацах, то без вариантов - поиск и замена.
Но здесь надо найти символ абзаца, проверить код следующего за ним символа и, если это код в интервале 224-255, то удалить знак абзаца или заменить его на пробел.
То есть без макроса не обойтись. Знаю, что там всего пять строк кода, но VBA-Word знаю не очень.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.04.2007 (Пт) 15:08

Воспользуйся поиском тогда.
http://bbs.vbstreets.ru/viewtopic.php?t=31075
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Krasnaja Shapka
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 87
Зарегистрирован: 26.10.2006 (Чт) 12:13
Откуда: Киев

Сообщение Krasnaja Shapka » 20.04.2007 (Пт) 17:26

я так делал:
Код: Выделить всё
Const RusArray As String = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
With Selection.Find
       .ClearFormatting
       .Replacement.ClearFormatting
       .Wrap = wdFindContinue
       .Forward = True
       .Format = False
       .MatchCase = True

       For i = 1 To Len(RusArray)
           myChar = Mid(RusArray, i, 1)
           .Text = "^p" & myChar
           .Replacement.Text = " " & myChar
           .Execute Replace:=wdReplaceAll
       Next
End With

но уверен что есть более быстрый вариант...
Если ясность вашего объяснения исключает ложное толкование, все равно кто-то поймет вас неправильно.

Rust
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 01.02.2005 (Вт) 14:41

Сообщение Rust » 20.04.2007 (Пт) 17:52

Спасибо!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList