Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Упростить и доработать код по замене слов и их окончаний. / 3 сообщений из 3, страница 1 из 1
24.09.2013, 16:49
    #38406333
lopuxi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упростить и доработать код по замене слов и их окончаний.
Ребят, написал кое как код который выполняет простой макрос. Выделяешь нужное слово, запускаешь макрос и он по всему документу его заменяет и подсвечивает, то на что заменяет.

1. Проблема с окончаниями слов. Вот к примеру: Исполнителю, Исполнителя, Исполнитель. Уже три условия получается, три разных слова.
2. Громоздкий код, на одних if и ElseIf держится. думаю его можно сделать более компактным. Но мои небольшие знания VB этого не позволяют самостоятельно сделать.

Код: vbnet
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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
Sub selectWord2()

Dim rTmp As Range

Set rTmp = ActiveDocument.Range
    With rTmp.Find
        .Text = Selection.Text
        If Selection.Text = "Клиент" Then
            .Replacement.Text = "Принципал"
            .Replacement.Highlight = True
            .Execute Replace:=wdReplaceAll
        ElseIf Selection.Text = "Заказчик" Then
            .Replacement.Text = "Принципал"
            .Replacement.Highlight = True
            .Execute Replace:=wdReplaceAll
            Else
                If Selection.Text = "Приложениях" Then
                    .Replacement.Text = "Дополнительных соглашениях"
                    .Replacement.Highlight = True
                    .Execute Replace:=wdReplaceAll
                ElseIf Selection.Text = "Приложением" Then
                    .Replacement.Text = "Дополнительными соглашениями"
                    .Replacement.Highlight = True
                    .Execute Replace:=wdReplaceAll
                    Else
                        If Selection.Text = "Исполнитель" Then
                            .Replacement.Text = "Агент"
                            .Replacement.Highlight = True
                            .Execute Replace:=wdReplaceAll
                        ElseIf Selection.Text = "Компания" Then
                            .Replacement.Text = "Агент"
                            .Replacement.Highlight = True
                            .Execute Replace:=wdReplaceAll
                            Else
                                If Selection.Text = "Договор" Then
                                    .Replacement.Text = "Приложение"
                                    .Replacement.Highlight = True
                                    .Execute Replace:=wdReplaceAll
                                End If
                        End If
                End If
                
        End If
    End With

End Sub
...
Рейтинг: 0 / 0
24.09.2013, 19:54
    #38406555
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упростить и доработать код по замене слов и их окончаний.
lopuxi,

делайте на select case
и не надо вот это пихать в каждый блок:
Код: vbnet
1.
2.
                    .Replacement.Highlight = True
                    .Execute Replace:=wdReplaceAll

Вынесите его за условия. Вот и будет Вам сокращение.
...
Рейтинг: 0 / 0
25.09.2013, 18:54
    #38407676
lopuxi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упростить и доработать код по замене слов и их окончаний.
kuklp, спасибо помогло)
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Упростить и доработать код по замене слов и их окончаний. / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]