39 / 36 / 9
Регистрация: 10.04.2012
Сообщений: 376
Записей в блоге: 2
1

Висячие предлоги

04.10.2021, 17:44. Показов 593. Ответов 1

Добрый день!

Подскажите правильно ли я написал макрос для замены висячих предлогов?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub ВисячиеПредлоги()
 
Dim Prepositions() As Variant
    Prepositions = Array("без", "безо", "близ", "в", "во", "вместо", "вне", "для", "до", "за", "из", "изо", "из-за", "из-под", "к", "ко", "кроме", "между", "меж", "на", "над", "о", "об", "обо", "от", "ото", "перед", "передо", "пред", "пред", "пo", "под", "подо", "при", "про", "ради", "с", "со", "сквозь", "среди", "у", "через", "чрез")
 
    For i = 0 To 42
    
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "( @" & Prepositions(i) & ") @([а-яa-z0-9])"
        .Replacement.Text = "\1^s\2"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    Next i
End Sub
Почему-то, макрос пропускает некоторые предлоги? Например, предлог "по". Не могу понять почему.
И еще можно ли сделать, что бы при поиске игнорировался регистр символов?

Спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.10.2021, 17:44
Ответы с готовыми решениями:

Заменить висячие предлоги
Добрый день! Подскажите как заменить висячие предлоги? Если просто заменой ()({1;2}) () ...

Висячие строки!!!!
у меня в документе ворд 2007 выставлены все поля по 2,5 см, проблемы с нижним полем...последние...

Заменить в исходном файле предлоги «от» предлогами «до», предлоги «до» предлогами «от», частицы «не» союзами «но»
Программа должна быть на писана на языке Assembler. С комментариями. Программа должна обрабатывать...

Висячие соединения
Добрый день! Есть tcp сервер и клиент. Если клиент закрывает соединение не нормальным способом, то...

1
8311 / 4535 / 1771
Регистрация: 11.02.2013
Сообщений: 9,609
04.10.2021, 19:10 2
Лучший ответ Сообщение было отмечено VistaSV30 как решение

Решение

Цитата Сообщение от VistaSV30 Посмотреть сообщение
можно ли сделать, что бы при поиске игнорировался регистр символов?
Можно. Проще всего, если не использовать подстановочные знаки. Тогда флаг MatchCase будет работать.
Цитата Сообщение от VistaSV30 Посмотреть сообщение
макрос пропускает некоторые предлоги
Опять же, подстановочные знаки не нужны. Мне кажется, можно просто отбить пробелами и второй пробел заменить на неразрывный.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub ВисячиеПредлоги()
 
    Dim Prepositions() As Variant
    Prepositions = Array("без", "безо", "близ", "в", "во", "вместо", "вне", "для", "до", "за", "из", "изо", "из-за", "из-под", "к", "ко", "кроме", "между", "меж", "на", "над", "о", "об", "обо", "от", "ото", "перед", "передо", "пред", "пред", "пo", "под", "подо", "при", "про", "ради", "с", "со", "сквозь", "среди", "у", "через", "чрез")
 
    For i = 0 To UBound(Prepositions)
    
        With ActiveDocument.Range.Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .Text = " " & Prepositions(i) & " "
            .Replacement.Text = " " & Prepositions(i) & "^s"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchAllWordForms = False
            .MatchSoundsLike = False
            .MatchWildcards = True
        End With    
    Next i
End Sub
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2021, 19:10

Заменить в предложении предлоги "по" на предлоги "на"
Вася плохо учится. Учительница задала ему на дом написать предложение и сказала, что если там будут...

Висячие вершины графа
Доброго времени. Подскажите, пожалуйста, тяжело разобраться с темой висячих вершин. Такое задание:...

Висячие указатели, как с ними бороться
Здравствуйте, возникла такая проблема. Есть вектор объектов, в указатель заношу какой либо объект....

Удалить из графа изолированные и висячие вершины
Есть граф, у которого (abcdefg) - вершины, а ((bc) (bg) (cg) (cd) (ge)) - pебpа. Удалить из графа...

Удалить из графа изолированные и висячие вершины
Есть граф, у которого (abcdefg) - вершины, а ((bc) (bg) (cg) (cd) (ge)) - pебpа. Удалить из графа...

предлоги
помогите пожалуйста! Есть предложение в нем надо подсчитать кол-во предлогов! Как это сделать, и...

Предлоги а поиске
Здравствуйте! У меня в названии сайта к высокочастотнику добавлен предлог, так вот раньше яше было...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.